webpack.prod.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. const path = require('path');
  2. const webpack = require('webpack');
  3. const MiniCssExtractPlugin = require('mini-css-extract-plugin');
  4. const HtmlWebpackPlugin = require('html-webpack-plugin');
  5. const WebpackMerge = require('webpack-merge');
  6. const baseConfig = require('./webpack.base.js');
  7. const TerserPlugin = require('terser-webpack-plugin');
  8. const CopyWebpackPlugin = require('copy-webpack-plugin');
  9. module.exports = WebpackMerge.merge(baseConfig, {
  10. mode: 'production',
  11. //开发环境下默认启用cache,在内存中对已经构建的部分进行缓存
  12. //避免其他模块修改,但是该模块未修改时候,重新构建,能够更快的进行增量构建
  13. //属于空间换时间的做法
  14. cache: true,
  15. // 代码入口
  16. entry: {
  17. // 注册界面
  18. main: './src/main.js',
  19. },
  20. output: {
  21. path: path.resolve(__dirname, './dist'),
  22. publicPath: './',
  23. filename: './client-wms-board-js-bundle/[name].[contenthash:8].js',
  24. chunkFilename: './client-wms-board-js-chunk/[name].[contenthash:8].js',
  25. },
  26. devtool: 'source-map',
  27. plugins: (module.exports.plugins || []).concat([
  28. new webpack.DefinePlugin({
  29. 'process.env.APP_ENV': JSON.stringify('production'),
  30. }),
  31. new HtmlWebpackPlugin({
  32. title: 'Board',
  33. template: './public/index.html', // 源模板文件
  34. filename: './board.html', // 输出文件【注意:这里的根路径是module.exports.output.path】
  35. chunks: ['main'],
  36. }),
  37. new webpack.LoaderOptionsPlugin({
  38. minimize: true,
  39. }),
  40. // CSS 提取
  41. new MiniCssExtractPlugin({
  42. filename: './client-wms-board-style/[name].[contenthash:8].css',
  43. }),
  44. // 复制静态资源(字体和CSS文件)
  45. new CopyWebpackPlugin({
  46. patterns: [
  47. {
  48. from: 'public/font-awesome.min.css',
  49. to: 'font-awesome.min.css'
  50. },
  51. {
  52. from: 'public/pacifico.css',
  53. to: 'pacifico.css'
  54. },
  55. {
  56. from: 'public/webfonts',
  57. to: 'webfonts',
  58. noErrorOnMissing: true
  59. },
  60. {
  61. from: 'public/fonts',
  62. to: 'fonts',
  63. noErrorOnMissing: true
  64. }
  65. ]
  66. }),
  67. ]),
  68. });