Explorar o código

fix(web): 调整样式加载与 UnoCSS 配置并更新构建文档

zlwu hai 7 horas
pai
achega
09593b221b

+ 5 - 4
.cursor/cursorrules-frontend.md

@@ -933,15 +933,16 @@ FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memor
 ```json
 ```json
 {
 {
   "scripts": {
   "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,避免堆上限等于整机内存
 
 
 #### 适用场景
 #### 适用场景
 - 大型前端项目构建
 - 大型前端项目构建

+ 2 - 0
docs/部署文档/web前端生产环境部署指南.md

@@ -37,6 +37,8 @@ npm install
 npm run build:prod
 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:验证构建产物
 ### 步骤2:验证构建产物
 
 
 ```bash
 ```bash

+ 0 - 2
web/src/assets/styles/index.scss

@@ -12,8 +12,6 @@
 @use './sidebar.scss';
 @use './sidebar.scss';
 @use './btn.scss';
 @use './btn.scss';
 @use './ruoyi.scss';
 @use './ruoyi.scss';
-@use 'animate.css';
-@use 'element-plus/dist/index.css';
 
 
 body {
 body {
   height: 100%;
   height: 100%;

+ 2 - 0
web/src/main.ts

@@ -2,6 +2,8 @@ import { translateRouteTitle } from './utils/i18n';
 import { createApp } from 'vue';
 import { createApp } from 'vue';
 // global css
 // global css
 import 'virtual:uno.css';
 import 'virtual:uno.css';
+import 'element-plus/dist/index.css';
+import 'animate.css';
 import '@/assets/styles/index.scss';
 import '@/assets/styles/index.scss';
 import 'element-plus/theme-chalk/dark/css-vars.css';
 import 'element-plus/theme-chalk/dark/css-vars.css';
 
 

+ 1 - 7
web/uno.config.ts

@@ -1,10 +1,8 @@
 import {
 import {
   defineConfig,
   defineConfig,
   presetAttributify,
   presetAttributify,
-  presetIcons,
   presetTypography,
   presetTypography,
   presetUno,
   presetUno,
-  presetWebFonts,
   transformerDirectives,
   transformerDirectives,
   transformerVariantGroup
   transformerVariantGroup
 } from 'unocss';
 } from 'unocss';
@@ -23,11 +21,7 @@ export default defineConfig({
   presets: [
   presets: [
     presetUno(),
     presetUno(),
     presetAttributify(),
     presetAttributify(),
-    presetIcons(),
-    presetTypography(),
-    presetWebFonts({
-      fonts: {}
-    })
+    presetTypography()
   ],
   ],
   transformers: [transformerDirectives(), transformerVariantGroup()]
   transformers: [transformerDirectives(), transformerVariantGroup()]
 });
 });