术语解释
monorepo
定义:
- 表示单个项目仓库,单体仓库,其内部包含多个开发项目(project、module、package),每个开发项目间逻辑相互独立
优势:
- 透明度:所有人能看到所有人写的代码
- 简化依赖管理:轻而易举的依赖共享,因为所有的模块都保存在同意给代码仓库中,同时所有的依赖仅有一个版本,没有版本冲突和依赖地狱(dependency hell)
- 一致性:更容易的执行代码质量标准和风格统一
- 共享时间线:当api、共享的库发生重大变更时,会立刻暴露相关的问题,让不同的团队提前沟通
- 统一的CI、CD
缺点:
- 糟糕的性能:很难扩大规模,可能非常耗时(比如git blame)
- 污染主线分支:一个糟糕的主分支会影响所有在monorepo工作的人
- 学习曲线陡峭:如果各个项目之间高耦合的情况下
- 大量数据:monorepo每天会处理大量的数据和commit
- 文件权限管理:更具挑战性
- 代码审查:大量的pull requests、code review不友好
multirepo:多个项目保存在相互独立的代码仓库内