主题
基本概念
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 内部包。
包管理由 pnpm、npm、Yarn 等工具负责;Turborepo 负责任务编排和缓存。
