Skip to content

[ci] scripts/ 在零 tsconfig 覆盖内:turbo type-check 从不检查 scripts/__tests__/*.ts——一批门禁 pin 测试自身无类型门 #3494

Description

@yinlianghui

观察三次独立成立(#3451 dev、#3448 dev、#3449 dev 各自实测),原始记录在 #3448 评论区,由 PM 拆单立项(当时 GitHub 搜索限流未能查重,现补:关键词 scripts tsconfig type-check 检索 open issues 零命中)。

事实

  • tsconfig.json 的 include 只有 packages/examples/apps;scripts/ 不是 workspace 包,check-type-check-coverage.mjs判定覆盖也看不见它;
  • 因此 turbo run type-check 从不类型检查 scripts/**/*.ts——包括 ci-cd-pipeline-doc.test.tsvitest-invocation-guard.test.tsshadcn-local-patches.test.tsdocs-links-workflow.test.tscheck-doc-links.test.tscheck-links-workflow.test.ts 这批门禁 pin 测试自身;
  • 它们靠 vitest 运行时执行,类型错误要么运行时炸(能发现)要么静默通过(发现不了);
  • console vite/vitest configs rely on features configLoader: 'native' drops — a future Vite major turns 5 warnings into a broken config load #3384 的 dev 实测 tsc --noEmit --strict scripts/**/*.ts 当前仅 3 个报错(两个 TS7016 无声明 .mjs 导入 + 一个连带 TS2578),修复面小。

已知落点约束(#3448 dev 的三点分析,实施前提)

  1. ⛔ 不进 docs-links.yml(其设计前提是零安装秒级,tsc 需要完整 install)——正确的家是 ci.yml 的 type-check job(已有 install 与 turbo 缓存);
  2. 需要为 scripts/ 定 tsconfig 形态(并入根 include vs 独立 tsconfig.scripts.json)并与 check-type-check-coverage.mjs 的按包判定对齐;
  3. allowJs/checkJs 的选择会机械翻转既有 @ts-expect-error 的成立性,可能连带小改既有测试文件。

建议

独立 tsconfig.scripts.json(include scripts/**/*.ts,strict,noEmit 或 emitDeclarationOnly 视引用图定)+ ci.yml type-check job 加一步 tsc -p tsconfig.scripts.json;3 个既有报错一并修(补 @types 或局部声明,不动被导入的 .mjs 行为)。

Generated by Claude Code

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions