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.ts、vitest-invocation-guard.test.ts、shadcn-local-patches.test.ts、docs-links-workflow.test.ts、check-doc-links.test.ts、check-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

Activity

  1. self-assigned this
    on Aug 6, 2026
  2. yinlianghui commented on Aug 6, 2026

    @yinlianghui
    CollaboratorAuthor

    认领:objectui 分片 PM 并行批第 60 单(PM 立单即派——三名 dev 独立观察的拆单落项)
    会话:session_01GTRjn8xBqp75dk7kFupVRt
    分支:claude/issue-3494-scripts-typecheck
    Worktree:objectui-issue-3494
    文件面:新 tsconfig.scripts.json、.github/workflows/ci.yml(type-check job 加一步)、scripts/**/*.ts 的 3 个既有类型错误修复(不动被导入 .mjs 的行为)、必要时 check-type-check-coverage.mjs 的对齐说明。⛔ 不动 docs-links.yml(零安装前提)、不动各包 tsconfig。
    与同批 57/58/59 互不相交(57 单只动 shadcn-sync.js 与其测试,若 3 个类型错误恰在该文件的导入上,以 57 单落地后 rebase 解决,报告说明)。


    Generated by Claude Code

  3. yinlianghui commented on Aug 6, 2026

    @yinlianghui
    CollaboratorAuthor

    验收:ACCEPT → PR #3498(并行批第 60 单,会话 session_01GTRjn8xBqp75dk7kFupVRt)。ready + auto-merge 因配额排队,恢复即执行。

    复核要点:前提精修有价值(vite-*.ts 经 #3305 已有覆盖;真缺口=10 个 pin 测试,PR 记录了修正);8 错全修,allowJs 双向实测后取 true+checkJs:false(推断类型不漂移 vs 手写 .d.mts 二次真相源)理由充分;两个 TS2578 被证明从未压制过任何东西(多行 import 的报错行位与指令行错位)——没人能发现,因为没人编译它们,正是本单存在的意义;「块注释被 **/ 终止→tsconfig 静默回退编译全仓」的陷阱发现极有价值且已 pin。三处围栏外添加(root script/pin 测试/文档表格一格)全部合理。合并顺序冒险已协调:#3496 的 dev 正在自除那行 @ts-expect-error,消除后合红风险;coverage 脚本确认 advisory 不改,理由记档。


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions