提示:本网站现在为维护调试状态

Monorepo 工具鏈:Turborepo + pnpm workspace

Choyeon
Choyeon
2026年9月19日 1 分鐘閱讀 426 閱讀
472 字 1,598 字元 更新於 2026年11月8日
Monorepo 工具鏈:Turborepo + pnpm workspace
目錄

Monorepo 工具链:Turborepo + pnpm workspace

当项目从一个包拆为多个包,每个独立 repo 会导致依赖版本不一致、代码复用难、发布链路繁琐。Monorepo 用工具链解决这些痛点,Turborepo + pnpm 是目前体验最优组合。

pnpm workspace 依赖管理

在 pnpm-workspace.yaml 中声明 apps/* 和 packages/* 目录结构,根目录 pnpm install 自动硬链接,同一依赖跨包共享,node_modules 严格隔离避免幽灵依赖。workspace: 协议引用内部包,修改即时生效无需发版。

# pnpm-workspace.yaml
packages:
  - 'apps/*'
  - 'packages/*'
  - 'tooling/*'

# turbo.json
{
  "$schema": "https://turbo.build/schema.json",
  "pipeline": {
    "build": {
      "dependsOn": ["^build"],
      "outputs": [".next/**", "dist/**"],
      "cache": true
    },
    "typecheck": { "dependsOn": ["^build"], "outputs": [] },
    "lint": { "dependsOn": ["^build"], "outputs": [] },
    "test": {
      "dependsOn": ["^build"],
      "outputs": ["coverage/**"],
      "inputs": ["**/*.test.*", "jest.config.*"]
    },
    "dev": { "cache": false, "persistent": true }
  }
}

# root package.json
{
  "name": "my-monorepo",
  "private": true,
  "packageManager": "pnpm@9.0.0",
  "scripts": {
    "build": "turbo build",
    "typecheck": "turbo typecheck",
    "test": "turbo test",
    "dev": "turbo dev",
    "release": "changeset version && changeset publish"
  },
  "devDependencies": {
    "turbo": "^2.0.0",
    "@changesets/cli": "^2.27.0",
    "typescript": "^5.4.0"
  }
}

# packages/ui/package.json
{
  "name": "@company/ui",
  "version": "1.2.0",
  "type": "module",
  "main": "./dist/index.js",
  "types": "./dist/index.d.ts",
  "exports": {
    ".": { "types": "./dist/index.d.ts", "import": "./dist/index.js" },
    "./styles.css": "./dist/styles.css"
  },
  "sideEffects": false
}

Turborepo 增量构建与缓存

turbo.json 声明任务依赖图:子包 build 依赖上游^build,自动拓扑排序。每次构建的输入哈希命中本地或远程缓存直接跳过,CI 构建速度可提升 5-20 倍。

维度 手工多仓 Lerna + yarn pnpm + Turborepo pnpm + Nx
依赖去重 跨仓各装 中等 hoisting 硬链接共享 与Turborepo相同
任务编排 脚本 弱并行lerna run DAG智能缓存 targetDefaults
远程缓存 无 付费企业版 自建S3/Vercel免费 Nx Cloud免费额度
幽灵依赖风险 低 高 极低 极低

最佳实践

内部包统一 @scope/pkg 命名,Changesets 管理版本与 changelog,禁止跨包相对路径 import。远程缓存配团队 S3 存储,CI 共享加速全员构建。

X微博Telegram

本文作者

投票

你最希望 Rosetta 优先加入哪项功能?

社区投票(演示数据,可后台删除)

留言 (3)

0 / 3000
云端漫步
云端漫步cloud-notes.cloud2026年9月24日

补充一个小技巧:用 kubectl 的 kubectx + kubens 插件切换集群和命名空间超级方便,谁用谁知道。

游戏策划阿哲
游戏策划阿哲2026年9月24日

按照你的教程搭建完 Prometheus + Grafana 监控后,节点 exporter 的数据采集延迟挺高的,这个正常吗?

机器学习萌新
机器学习萌新2026年9月24日

看到你那个 Nginx 配置示例,有个安全问题:server_tokens 建议关掉,不然会暴露 Nginx 版本号给攻击者。

相關文章

CI/CD Pipeline 設計:GitHub Actions + Cache + Matrix Build

CI/CD Pipeline 設計:GitHub Actions + Cache + Matrix Build

從零設計一套工業級 GitHub Actions 流水線:npm/pip 依賴緩存、多版本 Node/Python Matrix 並行構建、Docker 鏡像分層緩存、Lint+Test+Build+Publish 分階段、條件執行、環境矩陣、失敗重試和發佈門禁最佳實踐,附完整工作流代碼。

1 分鐘閱讀
Git 高級工作流

Git 高級工作流

全面掌握 Git 進階操作:Interactive Rebase 整理提交歷史、Cherry-pick 精挑細選移植提交、Bisect 二分查找回歸 Bug 源頭,配合 reflog 與 reset 拯救誤操作。

1 分鐘閱讀
Docker Compose 生產部署實戰

Docker Compose 生產部署實戰

本文深入講解 Docker Compose 在生產環境中的最佳實踐,覆蓋多階段構建、健康檢查、資源限制、日誌配置、網絡隔離、密鑰管理等核心話題,助你構建穩定可擴展的容器化部署方案。

1 分鐘閱讀
Tailwind CSS v4 新特性:Zero-config + CSS-native 變數

Tailwind CSS v4 新特性:Zero-config + CSS-native 變數

Tailwind CSS v4 是一次架構級升級:徹底拋棄 tailwind.config.js,用 @theme 塊在原生 CSS 文件聲明設計令牌;新增 @import "tailwindcss" 單入口代替 postcss.config;內置 CSS 變量、容器查詢原生支持、oxc 引擎提速 10-40 倍、顏色函數簡化。

1 分鐘閱讀
PWA 離線應用實戰:Service Worker + IndexedDB + Background Sync

PWA 離線應用實戰:Service Worker + IndexedDB + Background Sync

逐步構建可安裝、可離線運行、網絡恢復自動同步的 Progressive Web App:Service Worker 緩存策略(Cache First / Stale-While-Revalidate)、IndexedDB 封裝結構化本地數據、Background Sync 後台隊列在用戶離線操作後網絡恢復時自動提交變更,附完整 TS 代碼。

1 分鐘閱讀
GraphQL vs REST:從 7 個維度深度對比

GraphQL vs REST:從 7 個維度深度對比

終結選型焦慮:從網絡傳輸效率、前端開發體驗、後端演進成本、緩存策略、類型安全、安全風險、生態工具鏈 7 大維度系統對比 GraphQL 與 REST,給出清晰決策樹與混合架構模式。

1 分鐘閱讀