什么是monorepo?
monorepo 是一个代码库中包含许多不同应用程序和包的集合。
monorepo如何运作?
monorepo 的主要构建块是 workspace。每个应用程序和包都将位于自己的workspace中,并带有自己的package.json. workspace 可以相互依赖。
同时它还拥有一个 root workspace - 根目录下的 package.json。它用于:
- 指定整个 monorepo 中存在的依赖项
- 添加在整个monorepo上运行的任务,而不仅仅是单个工作区
- 添加有关如何使用 monorepo 的文档
在monorepo中安装包
Turborepo 与四个包管理器兼容:
- npm
- pnpm
- Yarn 1
- Yarn >=2(文档即将推出)
添加/删除/更新包(以pnpm为例)
- 在 workspace 添加包
shell
pnpm add <package> --filter <workspace>
- 在 workspace 删除包
shell
pnpm uninstall <package> --filter <workspace>
- 在 workspace 更新包
shell
pnpm update <package> --filter <workspace>
workspace
workspace 是 monorepo 的构建块。添加到 monorepo 的每个应用程序和包都将位于其自己的工作区内。
配置 workspace(以pnpm为例)
将要配置为工作区的文件夹添加到pnpm-workspace.yaml根目录中存在的文件中。
yaml
packages:
- "docs"
- "apps/*"
- "packages/*"
以上配置对应的工程目录为
my-monorepo
├─ docs
├─ apps
│ ├─ api
│ └─ mobile
├─ packages
│ ├─ tsconfig
│ └─ shared-utils
推荐的一个常见约定是拥有顶级apps/和packages/目录。