我用 Webpack5 打了个 React 项目,发现 vendor.js 有 2MB 多,首屏加载特别慢。已经开了 optimization.splitChunks,但效果不明显,是不是配置写得不对?
这是我的 splitChunks 配置:
optimization: {
splitChunks: {
chunks: 'all',
cacheGroups: {
vendor: {
test: /[\/]node_modules[\/]/,
name: 'vendors',
chunks: 'all',
}
}
}
}
先装个分析工具看看到底是哪些库占空间:
在webpack配置里加上:
跑完打包会弹个窗口,你一看就知道哪个库体积离谱。
针对你的配置,改成下面这样:
priority是关键,数字大的先匹配,这样react和react-dom会被单独抽出来。
另外检查几点:
1. 生产环境有没有开mode: 'production',没开的话minification不会生效
2. 用了antd之类的UI库吗?如果用了,加babel-plugin-import按需加载,能小很多
3. lodash是不是整个import了?改成lodash/es来tree shaking
先跑一下bundle analyzer,看看是哪个库在搞事情。