perf:依赖文件拆分,避免首屏阻塞

main
黄伟杰 23 hours ago
parent 6ce4eb9b50
commit abc4e53994

@ -77,10 +77,50 @@ export default ({command, mode}: ConfigEnv): UserConfig => {
outDir: env.VITE_OUT_DIR || 'dist',
sourcemap: env.VITE_SOURCEMAP === 'true' ? 'inline' : false,
// brotliSize: false,
// 提高 chunk 体积告警阈值,避免大量无意义警告
chunkSizeWarningLimit: 2000,
rollupOptions: {
output: {
manualChunks: {
echarts: ['echarts'] // 将 echarts 单独打包,参考 https://gitee.com/yudaocode/yudao-ui-admin-vue3/issues/IAB1SX 讨论
// 将体积较大的第三方依赖拆分为独立 chunk避免全部打进入口主 chunk 导致首屏阻塞
manualChunks(id: string) {
if (!id.includes('node_modules')) {
return
}
// 打印插件(体积最大,内含 jQuery 等),单独拆分
if (id.includes('vue-plugin-hiprint')) {
return 'hiprint'
}
// 表单设计器 / 表单渲染
if (id.includes('@form-create')) {
return 'form-create'
}
// 富文本编辑器
if (id.includes('@wangeditor')) {
return 'wangeditor'
}
// 图表库(含词云、底层 zrender
if (id.includes('echarts') || id.includes('zrender')) {
return 'echarts'
}
// 图片裁剪
if (id.includes('cropperjs')) {
return 'cropperjs'
}
// Element Plus 组件库
if (id.includes('element-plus') || id.includes('@element-plus')) {
return 'element-plus'
}
// Vue 全家桶
if (
id.includes('/vue/') ||
id.includes('/vue-router/') ||
id.includes('/@vue/') ||
id.includes('/pinia/') ||
id.includes('/vue-i18n/') ||
id.includes('/@intlify/')
) {
return 'vue'
}
}
},
},

Loading…
Cancel
Save