技能 monorepo-management
📦

monorepo-management

安全

使用 Turborepo 與 pnpm 建置並管理可擴展的 monorepo

也可從以下取得: wshobson

跨個別儲存庫管理多個套件會增加複雜性與不一致性。此技能提供使用 Turborepo、Nx 與 pnpm workspaces 設定 monorepo 的實證模式,以實現程式碼共用與高效建置。

支援: Claude Codex Code(CC)
🥉 74 青銅
1

下載技能 ZIP

2

在 Claude 中上傳

前往 設定 → 功能 → 技能 → 上傳技能

3

開啟並開始使用

測試它

正在使用「monorepo-management」。 設定 Turborepo monorepo 結構

預期結果:

已建立包含 apps/web (Next.js)、apps/docs (Next.js)、packages/ui (React 元元件)、packages/config (共用設定) 與 packages/tsconfig (TypeScript 設定) 的 monorepo。已在 turbo.json 中設定 build、test、lint 與 dev 管線。

正在使用「monorepo-management」。 為三個套件設定 pnpm workspace

預期結果:

已使用 apps 與 packages 目錄設定 pnpm-workspace.yaml。已建立 .npmrc 並啟用 shamefully-hoist 與 auto-install-peers。已在 workspace 根目錄安裝共用相依性,並在需要處為特定套件設定覆寫。

正在使用「monorepo-management」。 最佳化 Turborepo 快取

預期結果:

已在 turbo.json 管線中設定適當的 dependsOn 鏈、用於快取的 outputs 與用於快取失效的 inputs。已啟用 Vercel 遠端快取。未變更套件的建置時間從 12 分鐘縮短至 3 分鐘。

安全審計

安全
v1 • 2/25/2026

This skill contains documentation-only markdown files with instructional code examples. Static analysis flagged 60 patterns (external commands, network URLs, filesystem references, environment variables) but all are false positives - they appear in markdown code blocks as examples, not executable code. No security threats detected after manual review.

2
已掃描檔案
660
分析行數
0
發現項
1
審計總數
未發現安全問題
審計者: claude

品質評分

38
架構
100
可維護性
87
內容
50
社群
100
安全
91
規範符合性

你能建構什麼

建構多應用平台的新創公司

新創公司需要在 web 應用、行動應用與文件網站之間共用 UI 元元件與工具,同時維持一致的開發工具。

整合微服務的企業

企業希望將相關的微服務整合至 monorepo,以便進行跨服務重構並共用型別定義。

開原始函��庫維護者

維護者希望將大型函式庫拆分為多個聚焦的套件,同時保持在單一儲存庫中以利協調。

試試這些提示

快速 monorepo ���定
協助我使用 Turborepo 與 pnpm 建立新的 monorepo。我需要兩個應用(web 與 docs)以及一個共用 UI 套件。請提供初始資料夾結構與關鍵設定檔。
將現有專案遷移至 monorepo
我有三個獨立的儲存庫:一個 Next.js 應用、一個 React 元件函式庫,以及一個共用工具套件。引導我將它們遷移至單一的 pnpm workspace 與 Turborepo。
最佳化建置效能
我的 monorepo 建置需要 15 分鐘。分析我的 turbo.json 設定並建議改進快取、平行化與遠端快取設定以縮短建置時間。
設定 CI/CD 管線
為我的 Turborepo monorepo 建立一個 GitHub Actions 工作流程,在拉取請求上執行 lint、test 與 build,並在合併至 main 時僅部署受影響的應用。

最佳實務

  • 在根層級鎖定相依性版本,並對內部套件使用 workspace 協定
  • 精��設定 Turborepo inputs 與 outputs 以在確保正確性的同時最大化快取��中率
  • 使用 Changesets 進行多個套件的協調版本管理與發布

避免

  • 未在 package.json 相依性中宣告套件即進行匯入
  • 在 monorepo 中的套件之間建立循環相依性
  • 設定快取 outputs 過於寬鬆,導致未快取檔案產生過時建置

常見問題

我應該使用 Turborepo 還 Nx 來建構 monorepo?
Turborepo 更簡單且適用於大多數 JavaScript monorepo。Nx 提供更多功能,如相依性圖、生成器與受影響專案偵測,但學習曲線較陡峭。除非您需要 Nx 特定功能,否則從 Turborepo 開始。
如何在不同套件之間共用 TypeScript 型別?
建立一個專用的 types 套件 (packages/types) 以匯出所有共用的介面與���別。其他套件使用 workspace 協定從此套件匯入。這可確保 monorepo 中的型別一致性。
我可以在 CI 中僅部署變更的應用嗎?
可以。使用 Nx 的 affected 指令或設定適當分支比較的 Turborepo。GitHub Actions 可偵測變更的套件並僅部署受影響的應用,縮短部署時間與成本。
如何處理不同套件間的 Node.js 版本差異?
使用 package.json 中的 engines 欄位指定版本需求。設定 CI 針對您支援的最低版本進行測試。如需要,考慮使用 volta 或 nvm 管理各套件的 Node 版本。
什麼是 workspace 協定���何時應使用它?
workspace 協定 (workspace:*) 在 monorepo 中連結套件,而非從 npm 取得。對所有內部套件相依性使用此協定,以確保在開發與建置期間始終使用本地版本。
如何從 monorepo 發布套件?
使用 Changesets 管理版本與發布。執行 changeset 建立版本變更檔案,然後執行 changeset version 與 changeset publish。這會協調版本遞增並僅發布變更的套件。