前端工程化 词条目录
前端Wiki/词条/Monorepo 单体仓库

Monorepo 单体仓库

定义把多个项目/包放进同一个 Git 仓库统一管理的工程模式,配合 pnpm 与 Turbo 已成主流

Monorepo 的对立面是 Multirepo——每个包一个仓库、各自发版。单体仓库的好处是原子化协作:跨包重构一次提交搞定、公共配置(eslint/tsconfig/CI)统一维护、工具链版本一致、本地联调直接链接源码无需发包。坏处是单仓库体积膨胀、权限管理粗、对构建缓存要求高。规模上去之后,跨包版本一致性、变更影响分析与统一发版节奏,反过来又是 Multirepo 很难低成本提供的能力。

它的成败完全取决于工具链是否到位。pnpm 用符号链接解决了幽灵依赖并天然支持 workspace;Turborepo/Nx 提供任务编排与远程缓存,让「只跑变动过的任务」成为可能。工具链跟不上时,Monorepo 就会退化成「多个项目硬塞一个仓库」的灾难。所以判断要不要上 Monorepo,本质是判断团队能否持续投入维护这套基础设施,而不是看别人都在用。

JavaScript
// pnpm-workspace.yaml —— 声明 monorepo 工作区
packages:
  - 'apps/*'      # apps/web、apps/admin
  - 'packages/*'  # packages/ui、packages/utils

// 跨包引用(apps/web/package.json)
{
  "dependencies": {
    "@my/ui": "workspace:*"      // 始终指向本地源码
  }
}

// 常用命令(仓库根目录执行):
// pnpm i -r            一次性给所有包安装依赖
// pnpm --filter @my/ui build   只构建 ui 包
// pnpm -r run build    并行构建全部包(配合 turbo 缓存更好)
⚠ 常见误区
🔗 相关词条yarn 与 pnpm脚手架搭建
← 返回来源章节yarn 与 pnpm