使用 pnpm 构建一个 monorepo 的库
1. 安装 pnpm,有则跳过
npm install pnpm -g
2. 初始化目录
pnpm init
3. 创建配置文件
在根目录下创建 pnpm-workspace.yaml
文件,内容如下
packages:
- "packages/**"
4. 创建子仓目录
创建 packages
文件夹
5. 创建 2 个子仓
在 packages
目录下,创建 subProject1
,subProject2
目录,分别进入执行 pnpm init
此时目录结构如下
6. 依赖安装
monorepo 的依赖可以安装在主仓中,也可以安装在子仓中,通常在主仓中执行命令
- 通常我们把一些公用的依赖安装在主仓中,例如
prettier
,eslint
等,使用-w
pnpm add prettier -D -w
- 将一些子仓专用的依赖安装在子仓中,使用
--filter [子仓名]
pnpm add xxx --filter subProject1
7. 子工程依赖其他子工程
在子工程中安装依赖时,会优先寻找其他子仓的同名依赖,通过软链接的方式安装到子仓中,没有才会去 npm 上面找
pnpm add subProject2 --filter subProject1
此时,观察一下 subProject1
的 package.json
文件
// ...
"dependencies": {
"subProject2": "workspace:^"
}
观察一下 subProject1
的 node_modules
文件夹,你会发现 subProject2
是一个符号链接