perf: 优化构建体积和依赖

- 移除未使用的依赖包 (@unovis/ts, @unovis/vue, markdown-it)
- 优化 vite manualChunks 配置,将 echarts/chart.js 分离为独立 chunk
- 主入口文件从 1.1MB 减少到 211KB (-81%)
- 依赖包数量从 837 减少到 662
This commit is contained in:
2026-05-07 18:48:14 +08:00
parent f700dc0a58
commit fa281040d0
5 changed files with 37 additions and 1804 deletions
+22 -3
View File
@@ -112,9 +112,25 @@ export default defineConfig({
},
entryFileNames: 'assets/[name]-[hash].js',
assetFileNames: 'assets/[name]-[hash].[ext]',
manualChunks: {
'vue-vendor': ['vue', 'vue-router', 'vue-i18n', 'pinia', '@vueuse/core'],
'ui-vendor': ['reka-ui', 'class-variance-authority', 'clsx', 'tailwind-merge', 'lucide-vue-next'],
manualChunks(id) {
if (id.includes('node_modules/echarts/') || id.includes('node_modules\\echarts\\')) {
return 'echarts'
}
if (id.includes('node_modules/chart.js/') || id.includes('node_modules\\chart.js\\')) {
return 'chart'
}
if (id.includes('node_modules/vue/') || id.includes('node_modules/vue-router/') || id.includes('node_modules/vue-i18n/') || id.includes('node_modules/pinia/') || id.includes('node_modules/@vueuse/')) {
return 'vue-vendor'
}
if (id.includes('node_modules/reka-ui/') || id.includes('node_modules/class-variance-authority/') || id.includes('node_modules/clsx/') || id.includes('node_modules/tailwind-merge/') || id.includes('node_modules/lucide-vue-next/')) {
return 'ui-vendor'
}
if (id.includes('node_modules/vee-validate/') || id.includes('node_modules/@vee-validate/') || id.includes('node_modules/zod/')) {
return 'form-vendor'
}
if (id.includes('node_modules/@tanstack/')) {
return 'table-vendor'
}
},
},
},
@@ -135,4 +151,7 @@ export default defineConfig({
drop: ['debugger'],
pure: ['console.log'],
},
optimizeDeps: {
exclude: ['echarts', 'chart.js'],
},
})