前端避坑 · CI/CD · 遠端 Mac

2026 年前端避坑對照表:
遠端 Mac 上 Biome 與 TypeScript 增量檢查平行 worker、快取與發布前三步驗收

2026.03.31 MacWww 工程團隊 約 6 分鐘閱讀

遠端 Mac自託管 Runner上,把 Biome 的 lint/format 與 TypeScript增量型別檢查tsc --incremental)疊在同一條流水線,常見坑是快取鍵漏欄位兩行程搶滿 CPUtsbuildinfo 路徑漂移致「每次都像全量」。本文以對照表對齊 biome.jsontsc,並附Runner/核心綁定速查與 CI/CD發布前三步驗收。延伸閱讀:Monorepo 遠端快取ESLint/Stylelint 修復分支package.json scripts 預檢

核心詞:Biome · TypeScript · incremental · 遠端 Mac · worker · CI/CD · 快取

發布前三步驗收(可貼進 PR 範本):

  1. 第一步:tsc -p . --noEmit(Monorepo 則依各套件腳本)結束代碼 0,且 *.tsbuildinfo 寫入路徑與 tsconfigincrementalcomposite 一致。
  2. 第二步:biome check(或 biome ci)結束代碼 0;若與 format 分步,請確認 CI 與本機同一 biome.json 與同一 Biome 版本。
  3. 第三步:預覽環境或最小冒煙(路由、授權、關鍵 API)通過後再晉級正式環境;可與 部署前冒煙 串聯。

遠端節點磁碟延遲會放大 tsc 讀取專案參照與 .d.ts 的 I/O;請在 CI 日誌區分「快取命中」與冷啟全量,並讓步驟一寫明預期的 tsBuildInfoFile,以免 paths 與根 tsconfig 在筆電與 Runner 不一致時增量路徑先壞。

01 biome.json 與 tsc --incremental 對照表

下表用於審查「靜態檢查階段」設定是否成對閉合:Biome 管檔案集合與規則版本,tsc 管型別圖與增量產物。Monorepo 建議每個套件獨立 tsconfig 與明確的 tsbuildinfo 輸出,避免根目錄單點失效;套件圖與快取鍵可對照 SSR 建置併發與記憶體 中的 worker 思路。

維度 Biome(biome.json/CLI) TypeScript(tsconfig + tsc)
掃描範圍 files.includeignore;CLI 傳入路徑時與設定求交 includeexcludereferences 多專案時需頂層 tsc -b 或分套件呼叫
增量開關 內部索引與 .biome-cache(升級版號後建議清理) "incremental": true;常與 composite 並用;CLI:tsc --incremental(實際行為以 tsconfig 為準)
產物路徑 預設專案下 .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 --noEmittsc -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,避免與 jestvitest worker 爭用;實際以監控為準。
  • 執行緒池:若同行程還有 Node 原生依賴,留意 UV_THREADPOOL_SIZE 與建置工具的 worker(參見 Tailwind/PostCSS 記憶體與 worker)。
Runner 情境 Biome/tsc 排列 CPU 核心綁定建議
單機單 workflow 同 job 內先 Biome 再 tsc(快失敗),或兩個獨立 job 平行 預留 1~2 核給 I/O 與系統;勿與完整 E2E 同窗全開
M3/M4 以下記憶體吃緊 Biome 與 tsc序列化較常勝過過度平行 檢查類步驟用 maintenance 優先序,建置類保留預設/utility 類
多 repo 共用一台 Mac 以 Runner 標籤隔離「靜態檢查」與「完整建置」佇列 每台機器同時最多一個 tsc 全量視窗;Biome 可與輕量腳本共用剩餘核
經驗法則:型別檢查與 Biome 平行時,至少保留 1~2 核給 I/O 與系統;在較小記憶體機型上,順序執行兩段檢查的總耗時,往往優於過度平行造成的抖動與快取失效。

03 快取目錄與 CI 快取鍵

下列路徑建議納入 actions/cache 或遠端建置快取,並在 lockfileBiome 版號、tsconfig 變更時失效:

  • .biome-cache/
  • 各套件 *.tsbuildinfo(與 tsBuildInfoFile 一致)
  • node_modules/.cache(若其他工具與 Biome/tsc 共用機器)

若命中率長期為 0,先檢查是否每次 Job 刪除了 outDir 或把 tsbuildinfo 放在會被 clean 的目錄;再核對 paths 別名是否與本機一致(遠端 Mac 上路徑大小寫敏感)。依賴安裝與鏡像可對照 執行時與鏡像快取

04 CI/CD 語境下的門禁順序

建議順序:安裝依賴Biome(最快失敗)→ tsc單元/E2E建置產物。如此能在約一至兩分鐘內擋下格式與低階語法問題,再把時間投給昂貴的型別與測試。與 npm/pnpm 稽核並列時,稽核可放在依賴安裝後、編譯前的獨立 job,以免阻塞開發分支的快速回饋。稽核與型別門禁並存時,建議在摘要或 artifacts 保留當次指令列與結束代碼以利追溯。

遠端 Mac · 統一靜態檢查與發布門禁

在 MacWww 遠端 Mac 上跑 Biome + tsc 增量與完整發布鏈路

需要固定節點自託管 Runner、Safari 真機除錯或與團隊一致的 Xcode 工具鏈?可先開啟免登入 幫助中心 了解 SSH/VNC 接入;在 定價 頁比對套餐後,透過 購買頁 下單。更多前端與 OpenClaw 實戰見 技術見解列表官網首頁

免登入 · 立即購買