mono-repo 和 multi-repo
multi-repo
传统的代码管理是将一个项目使用一个仓库进行管理,这种方式就叫multi-repo多仓库管理方式。
这种方式的优点是:
- 独立:每个
repo可以灵活选择开发工具和环境配置等 - 安全:仓库之间相互隔离,发布上线对其他项目无影响
- 提交清晰:每个项目的提交能体现具体功能
缺点是:
- 代码复用繁琐:当涉及引用的模块需要进行改动时,修改另一个项目的代码、发布并安装是一件繁琐的事情
- 基建割裂:每个项目的开发配置如:
eslint、tsconfig.json等每个项目都不一样,同步更新十分繁琐
mono-repo
将多个项目组合到一个仓库进行管理。
这种方式的优点是:
- 代码复用方便:所有项目使用的都是最新的代码,不存在更新不及时的情况,为开发调试带来方便
- 基建统一:所有项目使用统一的工具、配置、规范
- 检索方便:同一个仓库中可迅速查询到其它模块,方便复用
缺点是:
- 体积庞大:多个项目组合到一个仓库且有可能继续新增,体积增大迅速
- 不安全:开发者可以改该仓库中的任意代码
- 版本控制困难:一次提交可能修改到多个项目的代码,理解和还原起来比较困难
如何选用
从优缺点来讲,multi-repo适合大型独立项目管理,该项目应与其引用的模块相比较大出一个量级。
mono-repo更适合各个模块间耦合度较高的情况,如:脚手架、组件库、前后端项目组合
实现方式
multi-repo传统方式使用git管理即可mono-repo推荐使用pnpm管理
