Skip to content

Monorepo 能给前端工程带来什么

Posted on:September 6, 2022 at 02:23 PM

Monorepo 能给前端工程带来什么

现在谈 Monorepo 或许有些晚了,作为历史可以追溯到 2000 年初的技术思想,它已经经过多次的迭代优化,衍生出了很多优秀的框架和工具。不过对于前端在近几年工程的日益复杂化,Monorepo 在前端领域或许可以降低一定的项目复杂度。

什么是 Monorepo ?

Monorepo 最早的出处是软件开发策略的一个分支,”mono” 表示单一 “repo” 是”reository”的缩写,

意为多个项目共用一个代码库来管理依赖关系,同一套配置文件,统一构建部署流程等等。

不仅仅是代码托管

如果项目之间没有定义明确的关系,仅仅是用同一个 git 仓库的话,并不能称之为 Monorepo 并且这样明显弊大于利。

如果有明确的依赖关系,但是关系冗余,并没有复用抽象,其实也不算真正意义上的 Monorepo。

Image.jpeg

为什么需要 Monorepo ?

我们把现在最普遍的 Polyrepo 拿出来比较一下

Polyrepo

Polyrepo 是当前开发应用程序的标准方式:每个团队的应用程序或项目都有一个单独的 repo。每个 repo 都有一个构建脚本配置和部署流程。

Image.jpeg

Polyrepo 流行的一个重要原因是有很好的天然隔离机制,项目自身不依赖其他任何团队的项目,开发团队可以自己决定使用那些框架,依赖库的版本,代码风格的配置,构建的自定义配置。

但过多的自由性和项目隔离也带来了很多协作和管理的问题

Monorepo

monorepo 如何帮助解决所有这些问题?

Monorepo 配合工具还可以做到什么?

Monorepos 有很多优势,但要让它们发挥作用,需要拥有正确的工具。随着工作空间的扩大,这些工具必须帮助您保持快速、易于理解和易于管理。

Image.jpeg

Image.jpeg

Monorepo 不同 solution 的比较

来源于 nrwl 整理的各个 Monorepo 工具的统计数据

Image

关于 Monorepo 的更多资源

GitHub - korfuri/awesome-monorepo: A curated list of awesome Monorepo tools, software and architectures.

The One Version Rule  |  Google Open Source

Build Monorepos, not Monoliths