vite项目构建优化大文件分块儿chunkSizeWarningLimit
构建项目时,经常会遇到下面这样的分块儿建议提示,主要的意思单个模块文件超过了默认块儿限制,建议进行代码分块儿后进行动态导入可以加速页面加载速度。
$ pnpm run build
> demo@0.0.0 build /apps/code/nodejs/vue-demos/demo
> vite build
vite v3.0.9 building for production...
✓ 97 modules transformed.
dist/ 0.59 KiB
dist/assets/entry/ 7.65 KiB / gzip: 3.37 KiB
dist/assets/file/ 5.55 KiB / gzip: 1.71 KiB
dist/assets/file/ 11.32 KiB / gzip: 2.20 KiB
dist/assets/chunk/ 1284.46 KiB / gzip: 442.74 KiB
(!) Some chunks are larger than 500 KiB after minification. Consider:
- Using dynamic import() to code-split the application
- Use to improve chunking: /guide/en/#outputmanualchunks
- Adjust chunk size limit for this warning via .
解决方法
两种方案:
- 上调限制的上限,比如又 500KB 调整到 1500KB
- 将代码分割成多个chunk。
下面是一个完整的示例:
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
// /config/
export default defineConfig({
server: {
proxy: {
"/api": {
target: "https://localhost",
changeOrigin: true,
secure: false,
},
},
},
plugins: [vue()],
build: {
chunkSizeWarningLimit: 1500,
rollupOptions: {
output: {
manualChunks(id) {
if (id.includes('node_modules')) {
return id.toString().split('node_modules/.pnpm/')[1].split('/')[0].toString();
}
}
}
}
}
})
修改成功之后的效果如下:
$ pnpm run build
> demo@0.0.0 build /codes/vue-demos/demo
> vite build
vite v3.0.9 building for production...
✓ 92 modules transformed.
Generated an empty chunk: "@vue_devtools-api@6.2.1"
Generated an empty chunk: "vue@3.2.37"
dist/ 1.14 KiB
...
dist/assets/vue-router@4.1.4_vue@3.2.37. 22.21 KiB / gzip: 9.13 KiB
dist/assets/@vue_runtime-core@3.2.37. 36.99 KiB / gzip: 15.41 KiB
这样,node_modules
下的模块会被分成多个模块同时被加载,相对于线性加载单独的大文件来说,这样可以加速了页面加载速度。
总结
总的来说,虽然代码分块儿处理了,但分的块儿越多,产生的连接数就越多,建立连接也是耗时的,所以分块儿的数量也要合理控制才好。
听说一键三连点赞的朋友可以升职加薪哈!