跨端: 修打包坑(构建失败被管道吞掉)+ dist 新鲜度判据;判据从"窗口式"改成同表达式
接手 pi 的 WebUI 开项途中踩到三个坑,都已修好并配判据(承接 e94313f)。 ## 坑 1:`npm run build 2>&1 | tail -4 && electron-builder …` 吞掉构建失败 pipeline 的退出码是 `tail` 的 → 构建失败、`&&` 照样往下走、electron-builder **拿旧的 dist 打了新包**。而所有判据都是绿的: - vitest 绿(见坑 2);packaging 绿(它比 dist vs 安装包,两边都是旧的,自然一致)。 新增判据:**dist 必须比 src 新**(build-stamp)。变异:`touch` 一个 src 文件 → 红; 重新 `npm run build` → 绿。错误信息写明"注意别把它的退出码丢在管道里"。 已重构建 + 重打包(deb 与 app.asar 同批,15:19)。 ## 坑 2:测试通过 ≠ 能打包 真正的失败:`AGGREGATE_ID` / `isUsableAccount` 被我当成 `accountStore` 的导出 (它们住在 `lib/accounts.ts`)。vitest 263 条全绿,生产构建直接报 `"AGGREGATE_ID" is not exported by "src/stores/accountStore.ts"` —— 测试运行时对缺的具名导出是宽容的(拿到 undefined)。**生产构建是一道独立的门。** ## 坑 3:判据写成"窗口式",被自己的变异测试抓住两次 `appearance-defaults` 的"取键函数必须把账号拼进去": 1. 第一版从 `export function` 切到 `}` → **参数表里的 accountId 满足了正则**, 把实现退回全局键仍然全绿(假判据!); 2. 第二版只取函数体 → `return accountId ? PREFIX : PREFIX;`(提了一下没用)又骗过去; 3. 第三版要求**同一个表达式里既有常量又有账号的插值/拼接**: 两种退化都红,合法的 `PREFIX + accountId` 写法仍然绿。 三种变异都验过(红/红/绿),还原后基线绿。 ## 文档 §7.12 两行改为「已修」并写明依据(默认值=服务端契约;缓存键差异已消除,旧全局键 只作一次性迁移源);新增 §7.20 记这三个坑与推论(产物是 gitignore 的, "源码修好"≠"用户手上那个包修好")。 ## 验证 `npm test` 退出码 0(13 个判据文件全绿 + vitest 263 passed); `hvigorw assembleHap` BUILD SUCCESSFUL;`npm run build` + electron-builder 均 exit 0。
This commit is contained in:
@ -1,6 +1,14 @@
|
||||
import { create } from 'zustand';
|
||||
|
||||
import { AGGREGATE_ID, isUsableAccount, useAccountStore } from './accountStore';
|
||||
/*
|
||||
* ⚠️ `AGGREGATE_ID` / `isUsableAccount` 住在 `lib/accounts.ts`(不在 accountStore 里,
|
||||
* accountStore 只是引用了它们)。我第一版从 `./accountStore` 导入,**vitest 全绿、生产构建直接失败**
|
||||
* (rollup: "AGGREGATE_ID is not exported by src/stores/accountStore.ts")——
|
||||
* 测试运行时对"缺的具名导出"是宽容的(拿到 undefined),只有打包器会报。
|
||||
* 教训:**生产构建是一道独立的门**,测试通过不等于能打包(见 §7.20)。
|
||||
*/
|
||||
import { AGGREGATE_ID, isUsableAccount } from '../lib/accounts';
|
||||
import { useAccountStore } from './accountStore';
|
||||
import { DEFAULT_BLUR, DEFAULT_DIM } from '../lib/appearanceDefaults';
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user