背景
全仓只有 5 个测试文件(proxy-matcher / url-safety / activity-events / seo-description / json-ld)。而每次 build 都在跑、坏了会静默污染数据的三个脚本零覆盖:
scripts/backfill-contributors.mjs —— frontmatter 解析 + isTranslation 跳过逻辑(错了直接污染排行榜)
scripts/generate-leetcode-slug-map.mts —— 中文 slug → 拼音映射(错了 301 链路全断,edge runtime 静态 import 它)
scripts/escape-angles.mjs —— prebuild 改写 MDX(错了 build 全挂或内容悄悄变形)
这类"胶水脚本"恰恰是历史事故多发区(参考 dev_docs/ 里 leetcode redirect、sync-uuid 的修复史)。
方案
- 把三个脚本的纯函数部分抽出可 import 的模块(脚本入口只留 I/O 编排),vitest 直接测:
parseDocFrontmatter:有/无 docId、有/无 translatedFrom、损坏 frontmatter
- slug 转换:中文标题、中英混排、特殊字符、已是拼音的幂等性
- escape-angles:泛型尖括号、JSX 标签不误伤、幂等性
- 快照测试:固定一组样例 MDX 输入,锁输出(防悄悄变形)。
- CI 已跑
pnpm test(vitest),无需新 workflow。
验收
- 三个脚本的核心逻辑分支覆盖 ≥80%
- 现有
pnpm build 产物与重构前 byte 级一致(重构不改行为)
背景
全仓只有 5 个测试文件(proxy-matcher / url-safety / activity-events / seo-description / json-ld)。而每次 build 都在跑、坏了会静默污染数据的三个脚本零覆盖:
scripts/backfill-contributors.mjs—— frontmatter 解析 +isTranslation跳过逻辑(错了直接污染排行榜)scripts/generate-leetcode-slug-map.mts—— 中文 slug → 拼音映射(错了 301 链路全断,edge runtime 静态 import 它)scripts/escape-angles.mjs—— prebuild 改写 MDX(错了 build 全挂或内容悄悄变形)这类"胶水脚本"恰恰是历史事故多发区(参考
dev_docs/里 leetcode redirect、sync-uuid 的修复史)。方案
parseDocFrontmatter:有/无 docId、有/无 translatedFrom、损坏 frontmatterpnpm test(vitest),无需新 workflow。验收
pnpm build产物与重构前 byte 级一致(重构不改行为)