Repo
Docs
什么是 Monorepo?

什么是 Monorepo?

Monorepo 是一个包含许多不同应用程序和包的单个代码库。

另一种设置称为 **Polyrepo** - 多个代码库,它们分别发布和版本化。

共享代码

在 Polyrepo 中

在 Polyrepo 设置中,在应用程序之间共享代码的过程相对较长。

假设您有三个独立的存储库 - appdocsshared-utilsappdocs 都依赖于 shared-utils,它作为包发布到 npm 上。

假设 shared-utils 中的错误导致 appdocs 中都出现严重问题。您需要

  1. shared-utils 中进行提交,修复错误
  2. shared-utils 中运行 publish 任务,将其发布到 npm 上
  3. app 中进行提交,提升 shared-utils 依赖项的版本
  4. docs 中进行提交,提升 shared-utils 依赖项的版本
  5. appdocs 现在可以部署了。

依赖于 shared-utils 的应用程序越多,此过程就越长。它可能非常繁琐。

在 Monorepo 中

在 Monorepo 设置中,shared-utils 将与 appdocs 位于 **同一个代码库** 中。这使得这个过程非常简单

  1. shared-utils 中进行提交,修复错误
  2. appdocs 现在可以部署了。

不需要版本控制,因为 app这使得能够创建单个提交,一次性修复多个应用程序和包中的错误。这对团队来说可以极大地提高速度。

单仓库如何运作?

单仓库的主要构建块是工作区。您构建的每个应用程序和包都将在自己的工作区中,并拥有自己的 package.json。正如您将在我们的指南中了解到的,工作区可以**相互依赖**,这意味着您的 docs 工作区可以依赖于 shared-utils

{
  "dependencies": {
    "shared-utils": "*"
  }
}

工作区由与安装依赖项相同的 CLI 管理。

根工作区

您还将拥有一个根工作区 - 代码库根文件夹中的 package.json。这是一个用于以下操作的有用位置

  1. 指定整个单仓库中存在的依赖项
  2. 添加对整个单仓库(而不仅仅是单个工作区)进行操作的任务
  3. 添加有关如何使用单仓库的文档