From ae960df8975729d46191cef151b35b358863b450 Mon Sep 17 00:00:00 2001 From: Disciple_C Date: Sun, 20 Sep 2026 15:24:36 +0800 Subject: [PATCH] feat: oyouhua build --- package.json | 2 +- src/pages/finance/reports/index.tsx | 14 +++++++++++++- vite.config.ts | 18 +++++++++++++++--- 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index a9847df..710375f 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "serve:prod": "vite --mode production", "build:dev": "vue-tsc --noEmit && vite build --mode development", "build:test": "vue-tsc --noEmit && vite build --mode test", - "build:prod": "vite build --mode production", + "build:prod": "node --max-old-space-size=4096 ./node_modules/vite/bin/vite.js build --mode production", "test": "vitest", "test:run": "vitest run", "test:coverage": "vitest run --coverage", diff --git a/src/pages/finance/reports/index.tsx b/src/pages/finance/reports/index.tsx index 18138b2..5595dfd 100644 --- a/src/pages/finance/reports/index.tsx +++ b/src/pages/finance/reports/index.tsx @@ -1,10 +1,22 @@ import { defineComponent, ref, nextTick } from 'vue'; import { DatePicker, Select, Table } from 'ant-design-vue'; -import * as echarts from 'echarts'; +import * as echarts from 'echarts/core'; +import { BarChart, LineChart } from 'echarts/charts'; +import { GridComponent, TooltipComponent, LegendComponent } from 'echarts/components'; +import { CanvasRenderer } from 'echarts/renderers'; import { useReportsModel } from './model/useReportsModel'; import { useEffect, useContainerSize } from '@/hooks'; import styles from './index.module.less'; +echarts.use([ + BarChart, + LineChart, + GridComponent, + TooltipComponent, + LegendComponent, + CanvasRenderer, +]); + const { RangePicker } = DatePicker; /** diff --git a/vite.config.ts b/vite.config.ts index 6e7821e..5654169 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -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'; } },