From abc4e5399434e1ecf4706369bd0c09de8313a81c Mon Sep 17 00:00:00 2001 From: hwj Date: Mon, 13 Jul 2026 14:39:21 +0800 Subject: [PATCH] =?UTF-8?q?perf=EF=BC=9A=E4=BE=9D=E8=B5=96=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E6=8B=86=E5=88=86=EF=BC=8C=E9=81=BF=E5=85=8D=E9=A6=96?= =?UTF-8?q?=E5=B1=8F=E9=98=BB=E5=A1=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vite.config.ts | 44 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/vite.config.ts b/vite.config.ts index 092c8145..269c765c 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -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' + } } }, },