Monorepo(单体仓库)架构
你把多个项目放在一个
.git仓库里统一管理 ------ 这只是 Monorepo 架构的起点, 但是还不是Monorepo架构,因为它缺乏Monorepo的工程加载,没有共享依赖、没有跨项目引用。如果再引入
pnpm workspace + Turborepo等工具,就升级为 现代化、高效率的 Monorepo 工程体系。
❗ 注意:不是所有"多项目同仓"都叫"规范的 Monorepo"
如果你只是简单地把几个不相关的项目丢进一个带.git的文件夹(比如作业 homework1/, homework2/),而没有使用工作区(workspace)工具、没有共享依赖、没有跨项目引用 ,那它只是一个 "物理上的单仓库" ,但缺乏 Monorepo 的工程价值。
真正的 Monorepo 架构 通常还会配套以下实践:
| 能力 | 工具示例 |
|---|---|
| 依赖管理 | pnpm workspace / yarn workspaces |
| 任务编排与缓存 | Turborepo / Nx |
| 按变更构建 | nx affected:build / turbo run --filter=... |
| 版本发布 | changesets / lerna |
对比其他模式
| 模式 | Git 仓库数 | 项目隔离性 | 协作效率 | 典型场景 |
|---|---|---|---|---|
| Monorepo | 1 个 | 低(代码可见) | 高(原子提交、共享依赖) | 大型产品、组件库生态、微前端 |
| Multi-repo | N 个 | 高(完全独立) | 低(跨仓修改繁琐) | 独立产品线、开源项目集合 |
| Git Submodule/Subtree | 1 主 + N 子 | 中(子模块独立) | 中(管理复杂) | 嵌入第三方库、可选模块 |