Skip to content

mono-repomulti-repo

multi-repo

传统的代码管理是将一个项目使用一个仓库进行管理,这种方式就叫multi-repo多仓库管理方式。

这种方式的优点是:

  1. 独立:每个repo可以灵活选择开发工具和环境配置等
  2. 安全:仓库之间相互隔离,发布上线对其他项目无影响
  3. 提交清晰:每个项目的提交能体现具体功能

缺点是:

  1. 代码复用繁琐:当涉及引用的模块需要进行改动时,修改另一个项目的代码、发布并安装是一件繁琐的事情
  2. 基建割裂:每个项目的开发配置如:eslinttsconfig.json等每个项目都不一样,同步更新十分繁琐

mono-repo

将多个项目组合到一个仓库进行管理。

这种方式的优点是:

  1. 代码复用方便:所有项目使用的都是最新的代码,不存在更新不及时的情况,为开发调试带来方便
  2. 基建统一:所有项目使用统一的工具、配置、规范
  3. 检索方便:同一个仓库中可迅速查询到其它模块,方便复用

缺点是:

  1. 体积庞大:多个项目组合到一个仓库且有可能继续新增,体积增大迅速
  2. 不安全:开发者可以改该仓库中的任意代码
  3. 版本控制困难:一次提交可能修改到多个项目的代码,理解和还原起来比较困难

如何选用

从优缺点来讲,multi-repo适合大型独立项目管理,该项目应与其引用的模块相比较大出一个量级。

mono-repo更适合各个模块间耦合度较高的情况,如:脚手架、组件库、前后端项目组合

实现方式

  • multi-repo传统方式使用git管理即可
  • mono-repo推荐使用pnpm管理