webpack.dev.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. const merge = require('webpack-merge').merge;
  2. const MiniCssExtractPlugin = require('mini-css-extract-plugin');
  3. const HtmlWebpackPlugin = require('html-webpack-plugin');
  4. const ESLintPlugin = require('eslint-webpack-plugin');
  5. const ProgressBarWebpackPlugin = require('progress-bar-webpack-plugin');
  6. const webpack = require('webpack');
  7. const path = require('path');
  8. const common = require('./webpack.config.js');
  9. const resolve = (url) => path.resolve(__dirname, "..", url);
  10. module.exports = merge(common, {
  11. mode: 'development',
  12. devtool: 'inline-source-map',
  13. plugins: [
  14. new ESLintPlugin({
  15. overrideConfigFile: resolve(".eslintrc.js"),
  16. context: resolve("src"),
  17. extensions: ['ts', 'js'],
  18. fix: true,
  19. }),
  20. new ProgressBarWebpackPlugin(),
  21. new HtmlWebpackPlugin({
  22. template: './index.html',
  23. title: 'luckysheet-io',
  24. scriptLoading: 'blocking',
  25. }),
  26. new MiniCssExtractPlugin({
  27. filename: 'css/[name].[contenthash].css',
  28. }),
  29. new webpack.ProvidePlugin({
  30. process: 'process/browser'
  31. })
  32. ],
  33. output: {
  34. filename: 'js/[name].[contenthash].js',
  35. library: 'luckysheet-io',
  36. libraryTarget: 'umd',
  37. },
  38. devServer: {
  39. host: '127.0.0.1',
  40. port: 'auto',
  41. static: './',
  42. hot: true,
  43. bonjour: true,
  44. client: {
  45. progress: true,
  46. overlay: true,
  47. },
  48. },
  49. });