Contents

monorepo总结

基本概念

monorepo是一种项目管理方式, 就是将多个项目放在一个仓库里。相反的是MultiRepo模式,即每个项目对应一个单独的仓库。

MultiRepo 缺点

各自维护,难以复用。

项目间的代码复用繁琐

基础代码需要在多项目中使用,需要通过封装为npm包引用。但每次修改,需要重新发包,各项目更新包版本。

依赖包版本管理繁琐

  1. 升级依赖包,需要每个项目都单独升级。
  2. 依赖重复安装,多个依赖可能在多个仓库中存在不同的版本。

配置需要各自维护

每个项目都需要单独维护开发环境、CI、部署发布流程等配置。

Monorepo 优点

通用部分复用。

代码复用

由于所有的项目代码都集中于一个代码仓库,内部代码可以彼此相互引用。

依赖管理

  • 共同依赖可以提取至 root。,版本控制更加容易,依赖管理会变的方便。

  • 由于项目在同一个仓库,当某个项目的代码修改后,容易定位会影响到其他哪些项目。

统一配置

所有项目复用一套标准的工具和规范,无需各自维护。

Monorepo 缺点

  • 代码安全:代码全在一个仓库,难以对子项目进行权限控制。

  • 学习成本:因为聚合多个子项目,导致整个项目复杂度变高,新人需要梳理清楚各代码之间的相互逻辑。

  • 增加维护成本

    1. 如果缺乏规范化的约束,互相修改代码,会产生各种冲突,commit信息也会难以分辨。在故障排查或版本回滚时更加困难。
    2. 项目如果变的很庞大,那么 git clone、安装依赖、构建都会是一件耗时的事情。