Webpack Bundle分析时,为什么第三方库占比过大却看不到具体文件?
在用webpack-bundle-analyze分析打包结果时,第三方库显示占比60%但点击后全是vendor_chunk_0.js这样的抽象文件名,根本看不出是哪个库占的空间?
我试过用webpack-visualizer和bundle-stats都一样,还特意在webpack配置里加了
optimization: {
splitChunks: {
cacheGroups: {
vendors: {
test: /[\/]node_modules[\/]/,
name: 'vendors',
chunks: 'all',
}
}
}
}
但生成的报告里还是只有大块的vendor包,连react和axios这种明显的大头都分不开,是不是配置哪里漏了?
要拆开就得让 chunk 按模块名生成独立文件。把 cacheGroups 改成这样:
name 用函数动态生成,比如 react 就是 pkg.react.js,axios 就是 pkg.axios.js。这样 bundle 分析工具就能看到每个第三方库的独立体积了。
另外确保你在 bundle-analyzer 初始化时传了正确的 stats.json,而且打包时生成了 source map,不然也会影响解析精度。API调用相关的库比如 axios、fetch 类的,拆出来后一眼就能看清楚是不是被重复引入了。
要看到第三方库具体占比,需要改成按 module 层级分析,把 analyzer 的 mode 换成 'module' 就行
new BundleAnalyzerPlugin({
analyzerMode: 'module'
})
顺便说一句,分析 bundle 真心累,我昨晚也卡这问题了,试了几个配置才整明白