diff --git a/.cursor/cursorrules-frontend.md b/.cursor/cursorrules-frontend.md index ade94aa0..e0af4bf1 100644 --- a/.cursor/cursorrules-frontend.md +++ b/.cursor/cursorrules-frontend.md @@ -933,15 +933,16 @@ FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memor ```json { "scripts": { - "build:prod": "node --max-old-space-size=8192 node_modules/vite/bin/vite.js build --mode production", - "build:dev": "node --max-old-space-size=8192 node_modules/vite/bin/vite.js build --mode development" + "build:prod": "node --max-old-space-size=6144 node_modules/vite/bin/vite.js build --mode production", + "build:dev": "node --max-old-space-size=6144 node_modules/vite/bin/vite.js build --mode development" } } ``` #### 参数说明 -- `--max-old-space-size=8192`:设置堆内存限制为8GB -- 可根据项目规模和机器内存调整数值(4096=4GB, 8192=8GB) +- `--max-old-space-size=6144`:设置堆内存限制为 6GB +- 可根据项目规模和机器内存调整数值(4096=4GB, 6144=6GB, 8192=8GB) +- 2026-10-21:4096MB 会在生产构建 transform 约 2400 个模块时 OOM。当前开发机物理内存为 8GB,脚本使用 6144MB,避免堆上限等于整机内存 #### 适用场景 - 大型前端项目构建 diff --git a/docs/部署文档/web前端生产环境部署指南.md b/docs/部署文档/web前端生产环境部署指南.md index 7ec741bd..4a4aa319 100644 --- a/docs/部署文档/web前端生产环境部署指南.md +++ b/docs/部署文档/web前端生产环境部署指南.md @@ -37,6 +37,8 @@ npm install npm run build:prod ``` +构建脚本将 Node 堆上限设为 6144MB。4096MB 会在 transform 阶段被活对象占满(约 4091MB,GC 几乎无法回收)并报 `JavaScript heap out of memory`。本机物理内存为 8GB,因此不用 8192MB。同时限制 Rollup 并行读文件数,避免打包时把文件一次性读进内存。Element Plus 与 animate.css 改为普通 CSS 引入,不再经由 Sass 编译。构建已关闭控制台 gzip 体积统计,且小于 10KB 的分包不再预生成 `.gz`(较大的 js/css 仍会生成,供 nginx `gzip_static` 使用)。Element Plus 样式全量引入,打包时不再按组件重复引入样式。 + ### 步骤2:验证构建产物 ```bash diff --git a/web/src/assets/styles/index.scss b/web/src/assets/styles/index.scss index 9325c90a..730dc294 100644 --- a/web/src/assets/styles/index.scss +++ b/web/src/assets/styles/index.scss @@ -12,8 +12,6 @@ @use './sidebar.scss'; @use './btn.scss'; @use './ruoyi.scss'; -@use 'animate.css'; -@use 'element-plus/dist/index.css'; body { height: 100%; diff --git a/web/src/main.ts b/web/src/main.ts index d581632c..709841b7 100644 --- a/web/src/main.ts +++ b/web/src/main.ts @@ -2,6 +2,8 @@ import { translateRouteTitle } from './utils/i18n'; import { createApp } from 'vue'; // global css import 'virtual:uno.css'; +import 'element-plus/dist/index.css'; +import 'animate.css'; import '@/assets/styles/index.scss'; import 'element-plus/theme-chalk/dark/css-vars.css'; diff --git a/web/uno.config.ts b/web/uno.config.ts index 0c60a220..cb97e674 100644 --- a/web/uno.config.ts +++ b/web/uno.config.ts @@ -1,10 +1,8 @@ import { defineConfig, presetAttributify, - presetIcons, presetTypography, presetUno, - presetWebFonts, transformerDirectives, transformerVariantGroup } from 'unocss'; @@ -23,11 +21,7 @@ export default defineConfig({ presets: [ presetUno(), presetAttributify(), - presetIcons(), - presetTypography(), - presetWebFonts({ - fonts: {} - }) + presetTypography() ], transformers: [transformerDirectives(), transformerVariantGroup()] });