好处:提高打包速度。 亲测run build时间从 18s -> 16s
打包工具对业务代码本身无影响,理论是越先进越好
1. package.json 的依赖升级
以下几个包最好都升级到最新版本
{"vue-loader": "^15.9.6","webpack": "^5.26.0","webpack-cli": "^4.5.0","webpack-dev-server": "^3.11.2","terser-webpack-plugin": "^5.1.1","html-webpack-plugin": "^5.3.1",}
启动方式改变
"scripts": {// 旧的"dev": "webpack-dev-server --open --hot --env.NODE_ENV=development --progress --mode=development","build": "webpack --inline --env.NODE_ENV=production --progress --mode=production --hide-modules",// 换成新的"dev": "webpack serve --open --hot --progress --mode=development","build": "webpack --progress --mode=production",}
2. webpack.config.js 环境变量变了
// 旧的module.exports = (env) => {}// 新的, 增加一个argv参数, 然后webpack.config.js内全局替换: env.NODE_ENV -> argv.modemodule.exports = (env, argv) => {}
3. 增加 target: ‘web’ 否则无法热更新
{target: 'web', // 在 entry和output 同级位置添加这一行entry: './src/main.js',output: {},...}
4. 报错: Compiling RuleSet failed: A Rule must not have a ‘options’ property when it has a ‘use’ property
在 Webpack 最新版本中,rules 属性中的配置,可以有 test、exclude、use、include 等字段,但不允许有 options 了;如果需要,可以写成下面这样:
module: {rules: [// 旧写法(报错){test: /\.js$/,include: /src/,loader: 'babel-loader',options: {cacheDirectory: true}},// 新写法{test: /\.js$/,include: /src/,use: {loader: 'babel-loader',options: {cacheDirectory: true}}},// 旧写法{test: /\.(png|jpg|gif)$/,loaders: ['url-loader?limit=30720&name=img/[name].[ext]']},// 新写法{test: /\.(png|jpg|gif)$/,use: ['url-loader?limit=30720&name=img/[name].[ext]']},]}
5. 报错: TypeError: Cannot read property ‘PROCESS_ASSETS_STAGE_OPTIMIZE_INLINE’ of undefined
speed-measure-webpack-plugin 这个插件不能在用了 ┭┮﹏┭┮
跟此插件有关的代码都要注释掉
需要监控打包时间的话:可以用progress-bar-webpack-plugin
(原创整理,有疑问可以私信。如果有用,谢谢点赞~)
