Skip to content

基本概念

Multirepo

Multirepo 是多仓库管理模式。每个项目或 package 都是独立 Git 仓库,独立维护版本、依赖、CI/CD 与发布流程。

优点:

  • 仓库边界清晰。
  • 权限控制简单。
  • 每个项目可以独立选择技术栈和发布节奏。

缺点:

  • 跨仓库修改成本高。
  • 共享代码容易重复或版本滞后。
  • 工程规范、依赖版本、CI 配置容易分散。

Monorepo

Monorepo 是单仓库管理模式。多个应用、库、配置包位于同一个 Git 仓库中,共享统一的依赖安装、工程规范与协作流程。

优点:

  • 共享代码更直接。
  • 跨 package 修改可以在一次提交中完成。
  • 依赖版本、格式化、Lint、TypeScript 配置更容易统一。
  • CI 可以根据变更范围只执行受影响任务。

缺点:

  • 仓库规模增长后,需要更严格的目录、命名和权限约束。
  • CI、缓存、发布流程复杂度更高。
  • 如果缺少任务编排,容易变成“所有任务全量执行”。

常见误区

Monorepo 不等于统一发布

Monorepo 只是仓库组织方式,不要求所有 package 一起发布。

每个 package 仍然可以独立构建、测试、发布和部署。是否统一发布,取决于业务形态、版本策略和发布工具。

Monorepo 不等于把所有代码堆在一起

Monorepo 需要更清晰的边界,而不是更弱的边界。

常见边界包括:

  • apps/:可运行应用。
  • packages/:可复用库。
  • configs/packages/*-config:工程配置包。
  • tools/:脚本、CLI、构建辅助工具。

Turborepo 不负责包管理

Turborepo 不安装依赖,也不解析 workspace 内部包。

包管理由 pnpmnpmYarn 等工具负责;Turborepo 负责任务编排和缓存。

基于 MIT 许可发布