2026 年前端避坑对照表:
远程 Mac 上 Biome 与 TypeScript 增量检查并行 worker、缓存与发布前三步验收
在远程 Mac或自托管 Runner上,把 Biome 的快速 lint/format 与 TypeScript 的增量类型检查(tsc --incremental)叠在同一流水线里,最常见的坑是:缓存键漏了、两个进程抢满 CPU、以及tsbuildinfo 路径漂移导致「每次都全量」。本文用一张对照表对齐 biome.json 与 tsc 关键参数,给出并行 worker与CPU 核心绑定的实务建议,并落在 CI/CD 的发布前三步验收。延伸阅读:Monorepo 远程缓存、ESLint/Stylelint 修复分支、package.json scripts 预检。
发布前三步验收(可先贴进 PR 模板):
- 第一步:
tsc -p . --noEmit(或 Monorepo 下各包脚本)退出码 0,且*.tsbuildinfo写入路径与tsconfig的incremental/composite一致。 - 第二步:
biome check(或ci子命令)退出码 0;若与 format 分步,确保 CI 与本地同一biome.json版本。 - 第三步:预览环境或最小冒烟(路由、鉴权、关键 API)通过后再晋级生产;可与 部署前冒烟 串联。
01 biome.json 与 tsc --incremental 对照表
下面这张表用于评审「静态检查阶段」配置是否成对闭合:Biome管文件集与规则版本,tsc管类型图与增量产物。Monorepo 时建议每个包独立 tsconfig 与明确的 tsbuildinfo 输出,避免根目录单点失效;包图与缓存键可对照 SSR 构建并发与内存 中的 worker 思路。
| 维度 | Biome(biome.json / CLI) | TypeScript(tsconfig + tsc) |
|---|---|---|
| 扫描范围 | files.include / ignore;CLI 传入路径时与配置求交 |
include / exclude;references 多项目时需顶层 build --build 或分包调用 |
| 增量开关 | 内部索引与 .biome-cache(版本升级建议清理) |
"incremental": true;常与 composite 配合;CLI:tsc --incremental(默认随配置) |
| 产物路径 | 缓存目录默认在项目下 .biome-cache/ |
tsBuildInfoFile 指定 *.tsbuildinfo;默认多在 outDir 旁,需避免被 clean 误删或未入缓存 |
| 并行与 worker | Biome 内置多文件并行;可用 --max-diagnostics 控制输出量 |
tsc 单进程为主;与 Biome 适合进程级并行而非指望 tsc 多 worker |
| CI 建议命令 | biome ci . 或 biome check --error-on-warnings |
tsc -p tsconfig.json --noEmit 或 tsc -b(项目引用) |
02 并行 worker 与 CPU 核心绑定(macOS)
在 GitHub Actions 自托管或单机多 Job的 远程 Mac 上,Biome 与 tsc 同时跑容易把 P 核打满,拖慢同机的 Vite/Webpack 构建。可执行策略:
- 流水线分层:lint+typecheck 一个 job,build+test 另一个 job,用 needs 串联;比同 job 内盲目
&后台更可控。 - 限制并发 Job 数:自托管 Runner 标签分组,保证每台机器同时只跑一个重型 workflow。
- CPU 亲和(可选):在 Apple Silicon 上可用
taskpolicy -c maintenance降低后台任务优先级,或为检查脚本单独 Runner,避免与jest/vitestworker 争用;具体策略与机型相关,以监控为准。 - 线程池:若同进程还有 Node 原生依赖,关注
UV_THREADPOOL_SIZE与构建工具的 worker(参见 Tailwind/PostCSS 内存与 worker)。
03 缓存目录与 CI 缓存键
下列路径建议纳入 actions/cache 或远程构建缓存,并在 lockfile、biome 版本、tsconfig 变更时失效:
.biome-cache/- 各包
*.tsbuildinfo(与tsBuildInfoFile一致) node_modules/.cache(若其他工具与 Biome/tsc 共享机器)
若命中率持续为 0,先检查是否每次 Job 删除了 outDir 或把 tsbuildinfo 放在被 clean 的目录;再核对 paths 别名是否与本地一致(远程 Mac 上路径大小写敏感)。依赖安装与镜像可对照 运行时与镜像缓存。
04 CI/CD 语境下的门禁顺序
推荐顺序:安装依赖 → Biome(最快失败)→ tsc → 单元/E2E → 构建产物。这样能在 1~2 分钟内挡住格式与低级语法问题,再投入昂贵的类型与测试。与 npm/pnpm 审计 并列时,审计可放在依赖安装后、编译前的独立 job,以免阻塞开发分支的快速反馈。