prod.config.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. const path = require('path');
  2. const nodeExternals = require('webpack-node-externals');
  3. const { CleanWebpackPlugin } = require('clean-webpack-plugin')
  4. const TerserJSPlugin = require('terser-webpack-plugin')
  5. const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin')
  6. module.exports = {
  7. mode: 'production',
  8. entry: './src',
  9. output: {
  10. filename: 'bundle.js',
  11. path: path.resolve(__dirname, '../dist'),
  12. libraryTarget: 'commonjs2',
  13. },
  14. resolve: {
  15. alias: {
  16. '@': path.resolve(__dirname, '../src'),
  17. }
  18. },
  19. module: {
  20. rules: [
  21. {
  22. test: /\.js$/,
  23. use: 'babel-loader',
  24. exclude: /node_modules/,
  25. },
  26. {
  27. test: /\.css$/,
  28. use: ['style-loader', 'css-loader'],
  29. },
  30. // 抽离 less
  31. {
  32. test: /\.less$/,
  33. exclude: /\.module\.less$/,
  34. loader: [
  35. 'style-loader', // 注意,这里不再用 style-loader
  36. 'css-loader',
  37. 'less-loader'
  38. ]
  39. },
  40. {
  41. test: /\.module\.less$/,
  42. loader: [
  43. 'style-loader',
  44. {
  45. loader: 'css-loader',
  46. options: {
  47. modules: {
  48. localIdentName: '[local]_[hash:base64:5]',
  49. }
  50. }
  51. },
  52. // 'css-loader?modules',
  53. 'less-loader'
  54. ]
  55. }
  56. ],
  57. },
  58. // devtool: 'nosources-source-map',
  59. // devtool: 'source-map',
  60. devtool: 'cheap-module-source-map',
  61. externals: [nodeExternals()],
  62. optimization: {
  63. minimizer: [new TerserJSPlugin({}), new OptimizeCSSAssetsPlugin({})],
  64. }
  65. };