feat: oyouhua build

This commit is contained in:
2026-09-20 15:24:36 +08:00
parent 955914995c
commit ae960df897
3 changed files with 29 additions and 5 deletions
+15 -3
View File
@@ -7,6 +7,12 @@ import { resolve } from 'path';
// https://vitejs.dev/config/
export default defineConfig(({ mode }) => {
// 增大 Node 内存限制,防止构建时 OOM
const v8Flags = '--max-old-space-size=4096';
if (!process.env.NODE_OPTIONS?.includes('max-old-space-size')) {
process.env.NODE_OPTIONS = [process.env.NODE_OPTIONS, v8Flags].filter(Boolean).join(' ');
}
const env = loadEnv(mode, process.cwd(), '');
const isProd = mode === 'production';
@@ -54,12 +60,10 @@ export default defineConfig(({ mode }) => {
build: {
outDir: 'dist',
sourcemap: mode !== 'production',
// 生产构建移除 console 和注释(esbuild minify 阶段)
minify: isProd ? 'esbuild' : false,
chunkSizeWarningLimit: 1500,
rollupOptions: {
output: {
// 更细粒度的分包,确保按需加载
manualChunks(id) {
if (id.includes('node_modules')) {
if (id.includes('ant-design-vue') || id.includes('@ant-design')) {
@@ -68,7 +72,15 @@ export default defineConfig(({ mode }) => {
if (id.includes('vue') || id.includes('@vue') || id.includes('vue-router')) {
return 'vue-vendor';
}
// 其他第三方依赖单独打包,未使用的不会进入
if (id.includes('echarts')) {
return 'echarts';
}
if (id.includes('china-area-data')) {
return 'area-data';
}
if (id.includes('big.js')) {
return 'bigjs';
}
return 'vendor';
}
},