现代前端工程为什么越来越离不开 Monorepo?

2023-06-12  本文已影响0人  Poppy11

Monorepo

Monorepo概念上很好理解,其实就是多个项目使用一个仓库来管理。
Vue 3、Yarn、Npm7 等等知名开源项目的源码也是采用 Monorepo 的方式来进行管理的。

一般 Monorepo 的目录如下所示,在 packages 存放多个子项目,并且每个子项目都有自己的package.json:

├── packages
|   ├── pkg1
|   |   ├── package.json
|   ├── pkg2
|   |   ├── package.json
├── package.json

MultiRepo

MultiRepo则就是一个项目一个仓库

  1. 代码复用
    在维护多个项目的时候,肯定会有重复的逻辑,例如一些基础组件,工具函数,以及公共配置等,你可能会直接 copy代码,但有个问题是,如果这些代码出现 bug、或者需要做一些调整的时候,就得修改多份,维护成本越来越高。

    此时,你可能想到发布一个npm包。举个例子,比如你引入了 1.1.0 版本的 A 包,某个工具函数出现问题了,你需要做这些事情:

    • 去修改一个工具函数的代码
    • 发布1.1.1版本的新包
    • 项目中安装新版本的 A。
  2. 版本管理
    例如如我们上面所述,发布一个npm包,那么我们所有用到这个npm包的项目,我们都得挨个更新,很麻烦。

  3. 项目搭建
    在 MultiRepo 中,每个项目需要单独配置开发环境、配置 CI 流程、配置部署发布流程等等,这些逻辑都是重复的,如果是 10 个项目,就需要维护 10 份流程,逻辑重复不说,各个项目间存在构建、部署和发布的规范不能统一的情况,这样维护起来就更加麻烦了。

使用案例

上一篇下一篇

猜你喜欢

热点阅读