webpack.prod.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. const merge = require('webpack-merge').merge;
  2. const CleanWebpackPlugin = require('clean-webpack-plugin').CleanWebpackPlugin;
  3. const ESLintPlugin = require('eslint-webpack-plugin');
  4. const TerserWebpackPlugin = require('terser-webpack-plugin');
  5. const HtmlWebpackPlugin = require('html-webpack-plugin');
  6. const ProgressBarWebpackPlugin = require('progress-bar-webpack-plugin');
  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: 'production',
  12. devtool: 'source-map',
  13. plugins: [
  14. new CleanWebpackPlugin(),
  15. new ESLintPlugin({
  16. overrideConfigFile: resolve(".eslintrc.js"),
  17. context: resolve("src"),
  18. extensions: ['ts', 'js'],
  19. fix: true,
  20. }),
  21. new ProgressBarWebpackPlugin(),
  22. new HtmlWebpackPlugin({
  23. template: './index.html',
  24. title: 'luckysheet-io',
  25. scriptLoading: 'blocking',
  26. }),
  27. ],
  28. optimization: {
  29. minimize: true,
  30. minimizer: [
  31. new TerserWebpackPlugin({
  32. terserOptions: {
  33. format: {
  34. comments: false,
  35. },
  36. },
  37. extractComments: false,
  38. }),
  39. ],
  40. },
  41. output: {
  42. filename: 'js/[name].js',
  43. libraryTarget: 'umd',
  44. library: 'luckysheet-io',
  45. path: resolve('dist'),
  46. },
  47. });