|
|
45e77d9f69
|
build(deps): vite 5.4.21 → 8.3.4(含 plugin-vue 6)+ 修 CSS 拆块导致的主题/悬停回归
安全:消掉 2 条 high。vite 跨 3 个 major(5→8,rollup→rolldown);
@vitejs/plugin-vue 5.2.4 → 6.0.10(peer 覆盖 vite ^5||^6||^7||^8);
锁文件同步刷新使 nanoid / postcss / source-map-js 三条一并消解。
🔴 升级引入的 CSS 顺序回归(本轮实测发现并修复,不是理论风险):
rolldown 把 Element Plus 基础样式拆成独立 css-*.css 块,且 index.html 中
排在入口 CSS **之后**;旧 rollup 把 EP 与 global.css 合并在同一入口 CSS,
EP 在前、项目在后。两者覆盖语句特异性相同 ⇒ 谁在后谁赢 ⇒ 新顺序下反被 EP 压过。
取证:生产旧包 index-CVAb-2kd.css 内 EP 规则 @27768 < 项目覆盖 @57506(旧=正确);
新包 index-rMbH9bHe.css(先)vs css-CNpL_Sag.css(后)。
· --el-color-primary 退回 #409eff ⇒ 登录按钮由深藏青变 Element 亮蓝;
· 文字型按钮 hover 底退回不透明 #f5f7fa ⇒ 此前修好的「白底白字」缺陷复现。
修法=让覆盖与加载顺序无关(⛔ 不是调顺序,顺序由打包器决定不可靠):
· :root → html:root (0,0,1,1 > 0,0,1,0)
· .el-button.is-text:not(.is-disabled):hover/:focus 加 :root 前缀(4 → 5 个类级)
验证(四级对照,全部可复现):
1. 顺序单变量实验(两组页面除 <link> 顺序外完全相同):
修复前 A=SAME? → primary #1a3a5c vs #409eff、hover rgba(...) vs #f5f7fa(DIFF);
修复后两种顺序计算样式完全相同(PASS)。
2. 与生产旧包(旧 vite5 构建)逐项比对 computed style:primary / light-3 /
主按钮底色 / hover 底色 全部 SAME。
3. 登录页截图 sha256 与生产旧包**逐字节相同**(f5052aa7260b7b47)——
修复前为 9f074bb1c44329b3。
4. 真 chromium 加载构建产物(vite preview):/login、/admin 首屏、
成绩管理、选手管理全部 0 console error / 0 pageerror;
TDZ 静态门禁 38 文件 PASS。
产物:入口 index-DTFvE02d.js · 157 资源 · 73 个 .gz(两次构建 hash 一致=可复现)。
全量电池 57 步:退出码 0 · FAIL 0 · SKIP 0 · 未运行 0(1 项 N/A 为数据前提不成立)。
|
2026-10-21 12:05:29 +08:00 |
|
|
|
ea350fb2e0
|
feat(frontend): Element Plus 改按需引入,首屏 425.1->158.8KB(R36)
- vite.config.js: 新增 unplugin-vue-components + ElementPlusResolver;
optimizeDeps.include 动态生成 118 项无扩展名 specifier(glob/.mjs 皆静默失效)
- main.js: 删 app.use(ElementPlus) 与全量 CSS;改 provideGlobalConfig(locale, app, true);
显式引入 4 个函数式组件样式(message/message-box/notification/loading)
- views/Upload.vue: 3 处 h(resolveComponent('el-xxx')) 改显式组件引用;清 2 处死导入
- devDep: unplugin-vue-components@^32.1.0
- .gitignore: 忽略 vite.config.js.timestamp-*.mjs
验证:dist 渲染 9/9 · dist 登录后 9/9 · dev 通道致命错误 0/告警 0
瘦身:首屏 425.1->158.8KB(-62.6%);主包 JS 1112.9->281.09KB
|
2026-09-29 11:44:15 +08:00 |
|