跳至主要內容

Multirepo 与 Monorepo 简述

Mr.Dingtool大约 1 分钟约 416 字

Multirepo 与 Monorepo 简述

Multirepo(多仓库)

每个项目/服务拥有独立的 Git 仓库。

  • 团队可以独立选择技术栈、构建工具、发布节奏
  • 权限隔离自然,每个仓库可单独控制访问
  • 缺点:跨仓库的代码复用困难(需发 npm 包),重构/API 变更需要协调多个仓库的 PR,全局搜索和统一 CI 配置难以实现

Monorepo(单仓库)

所有项目/服务放在同一个 Git 仓库中管理。

  • 代码共享零成本——直接引用源码,不需要发包
  • 原子提交——一次提交可以同时修改 API 定义、实现和消费方,不会出现"A 改了接口但 B 还没更新"的窗口期
  • 统一工具链——CI、lint、测试框架全仓库一致
  • 缺点:仓库体积增长快,需要工具支持(Nx、Turborepo、Lerna);权限控制粒度粗,不能精细到目录级别

用途

两者都是代码组织和协作的策略,核心解决:

  1. 代码共享——如何在多个项目间复用代码
  2. 变更协调——当修改了一个底层库,如何保证所有使用者同步更新
  3. CI/构建效率——如何只构建受影响的部分,而不是全量构建

选择建议

  • Multirepo 更适合:团队完全独立、技术栈各异、发布节奏解耦的场景(如开源项目、不同部门的产品)
  • Monorepo 更适合:多个项目紧密关联、需要频繁跨项目重构、统一技术栈的场景(如 Google、Meta、字节跳动内部几乎所有项目都是 monorepo)
上次编辑于:
贡献者: dingyongya