prod.config.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. const path = require('path');
  2. const { CleanWebpackPlugin } = require('clean-webpack-plugin');
  3. const nodeExternals = require('webpack-node-externals');
  4. const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
  5. module.exports = {
  6. mode: 'production',
  7. entry: './src/kityminderEditor.js',
  8. output: {
  9. filename: 'bundle.js',
  10. path: path.resolve(__dirname, '../dist'),
  11. libraryTarget: 'commonjs2',
  12. },
  13. module: {
  14. rules: [
  15. {
  16. test: /\.js$/,
  17. use: 'babel-loader',
  18. exclude: /node_modules/,
  19. },
  20. {
  21. test: /\.css$/,
  22. use: ['style-loader', 'css-loader'],
  23. },
  24. // 抽离 less
  25. {
  26. test: /\.less$/,
  27. exclude: /\.module\.less$/,
  28. loader: [
  29. MiniCssExtractPlugin.loader, // 注意,这里不再用 style-loader
  30. 'css-loader',
  31. 'less-loader'
  32. ]
  33. },
  34. {
  35. test: /\.module\.less$/,
  36. loader: [
  37. 'style-loader',
  38. {
  39. loader: 'css-loader',
  40. options: {
  41. modules: {
  42. localIdentName: '[local]_[hash:base64:5]',
  43. }
  44. }
  45. },
  46. // 'css-loader?modules',
  47. 'less-loader'
  48. ]
  49. },
  50. {
  51. test: /\.s[ac]ss$/i,
  52. use: [
  53. // Creates `style` nodes from JS strings
  54. 'style-loader',
  55. // Translates CSS into CommonJS
  56. 'css-loader',
  57. // Compiles Sass to CSS
  58. 'sass-loader',
  59. ],
  60. },
  61. ],
  62. },
  63. // devtool: 'nosources-source-map',
  64. // devtool: 'source-map',
  65. devtool: 'cheap-module-source-map',
  66. externals: [nodeExternals()],
  67. plugins: [
  68. new CleanWebpackPlugin(),
  69. new UglifyJsPlugin({
  70. sourceMap: true,
  71. parallel: true,
  72. uglifyOptions: {
  73. output: {
  74. beautify: false, // 最紧凑的输出
  75. comments: false, // remove comments
  76. },
  77. compress: {
  78. unused: true,
  79. dead_code: true, // big one--strip code that will never execute
  80. drop_debugger: true,
  81. conditionals: true,
  82. evaluate: true,
  83. drop_console: false, // strips console statements
  84. sequences: true,
  85. booleans: true,
  86. },
  87. warnings: false,
  88. },
  89. }),
  90. ],
  91. };