- 升级新版本
- 排除打包过的文件
- 压缩
- 分包
- 按需加载
- 多进程
- 在
babel-loader
中使用 exclude
去掉已打包的文件:exclude: /node_modules/
optimization: {
minimizer: {
new TerserPlugin({
cache: true,
parallel: true,
sourceMap: false, // set to true if you want JS source maps
}),
},
}
- 体积大于30kb,单独打一个包
- 页面首屏加载的chunk不大于3个
- 按需加载并发请求chunk不大于5个
optimization: {
splitChunks: {
chunks: 'all',
maxInitialRequests: 20, // for HTTP2
maxAsyncRequests: 20, // for HTTP2
minSize: 500000, // for example only: choosen to match 2 modules
},
}
- 配合
react-router
,采用动态import()
实现,核心原理是使用jsonp
加载
tree-shaking
,利用es6静态分析引用,去除无用代码。
module: {
rules: [
'thread-loader',
{
loader: 'babel-loader?cacheDirectory',
},
],
}
webpack4.x 性能优化