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