抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

Mono-repo 和 Multi-repo 是软件开发中代码管理的两个不同策略。Mono-repo & Multi-repo 孰优孰劣是个老生常谈得话题了,这里就不 PK 了,“略微”看下两者区别。

当我们使用 Git 作为版本控制系统管理项目的代码时,那么 monorepo 与 multirepo 的定义表述如下:

  • monorepo,使用一个 Git 仓库管理项目相关的多个 模块/包/功能/应用。
  • multirepo(又称为 polyrepo),使用多个 Git 仓库分别管理项目的每一个 模块/包/功能/应用。

Monorepo 的应用实例

GitHub 有很多的使用 Monorepo 风格管理代码的开源项目,比如大名鼎鼎的 Babel,项目结构如下图:

packages 目录下存放了很多个 Babel 相关的子项目。

googles-monorepo-demo给出了一个基于 Maven 构建工具的 Google 风格的 Monorepo 项目。

还有大佬给出了有 CI/CD pipeline 基于 Java, Maven, GitHub Actions 的 Demo 👉 monorepo-maven-example

使用工具快速搭建 Monorepo 风格的项目

现今,有许多可以创建 Monorepo 风格项目的工具,在前端社区有 Lerna、Nx、Rush Stack、Yarn Workspaces 等,还有许多其它的构建工具可以用于创建 Monorepo 风格的项目,见项目 -> awesome-monorepo。这里让我们看看通过 Nx 创建的 Monorepo 风格的项目是怎么样的:

project structure

medium 上有篇文章简述了 11 种不同 Monorepo 构建工具的特点:11 Great Tools for a Monorepo in 2021

一图看 Monorepo 和 Multirepo 的区别

这里我们用一张图来看下使用 Git 管理多个 package 时,Monorepo 和 Multirepo(Polyrepo) 的区别:

Don’t say so much. 就这样了🤨🕊️,又水了一篇文章。

评论