Vite 的 manualChunks 配置怎么让第三方库单独打包?
我在用 Vite 做项目,想把像 lodash、axios 这些第三方库单独打成 vendor 包,但配置了 manualChunks 后发现它们还是被打进 main.js 里了,根本没拆出来。我试过按文档写,但好像没生效。
这是我的 Vite 配置片段:
build: {
rollupOptions: {
output: {
manualChunks: {
vendor: ['lodash', 'axios']
}
}
}
}
另外,我页面里用了点全局样式,比如:
.btn-primary {
background: #007bff;
color: white;
border: none;
padding: 8px 16px;
border-radius: 4px;
}
但不确定是不是这个影响了 chunk 分割?有谁遇到过类似问题吗?
第一,Vite 4+ 版本默认用了新的 chunk 策略,manualChunks 得这么配才有效:
第二,全局样式完全不影响 chunk 分割,别担心这个。我当初也以为是样式问题,结果发现完全不是。
补充个坑:如果用了动态导入,记得在 manualChunks 里排除掉,否则会被误判进 vendor。比如:
最后跑下
npm run build看看 dist 目录,应该能看到 vendor.js 单独打包出来了。要是还有问题,八成是某个依赖的引用方式有问题,比如直接用了 CDN 引入。