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' + } } }, },