Monorepo
TODO 学习 https://github.com/joelparkerhenderson/monorepo-vs-polyrepo
1. 什么是 Monorepo
Monorepo 是指在一个仓库中管理多个项目,这些项目可以是前端项目、后端项目、工具库等等。Monorepo 有很多优点,比如:
- 代码复用:不同项目之间可以共享代码,减少重复代码
- 统一管理:可以统一管理依赖、构建、测试等
- 代码可见性:可以更方便地查看不同项目的代码
- 依赖管理:可以统一管理依赖,减少依赖冲突
- 一致性:可以保证不同项目的一致性
Monorepo 也有一些缺点,比如:
- 仓库体积:随着项目数量的增加,仓库体积会变得很大
- 构建时间:随着项目数量的增加,构建时间会变得很长
- 依赖管理:依赖管理会变得复杂
- 代码可见性:不同项目之间的代码可见性会变得很差
Monorepo 适合于中小型团队,大型团队可能会因为仓库体积、构建时间等问题而不适合使用 Monorepo。
2. 快速开始
pnpm 是一个快速、强大的包管理工具,支持 monorepo 管理。
bash
mkdir monorepo-demo
cd monorepo-demo
pnpm init
创建 pnpm-workspace.yaml
文件,配置 monorepo 管理。
yaml
packages:
- packages/*
安装一个全局依赖:
bash
pnpm add typescript -D -w
创建一个包:
bash
mkdir packages/web
cd packages/web
pnpm init
然后编辑包名为 @demo/web
。
安装一个局部依赖:
bash
pnpm add vue -r --filter @demo/web
在其他包中引用包 @demo/web
:
bash
pnpm add @demo/web -r --filter @demo/app
这样 @demo/app
就可以引用 @demo/web
了。