解释:
- monorepos: 把相互依赖的项目组织成多包的形式放在同一个代码仓库里面
- lerna.js:管理项目的一个工具
文档:
安装lerna
$ pnpm i lerna -g
修改配置 lerna.json,设置包管理工具为:pnpm
{
"$schema": "node_modules/lerna/schemas/lerna-schema.json",
"useNx": true,
"useWorkspaces": true,
"version": "0.0.0",
"npmClient": "pnpm"
}
lerna init
# 初始化
$ lerna init
lerna create
# 创建三个新包
$ lerna create -y animal
$ lerna create -y cat
$ lerna create -y dog
文件目录
$ tree -I node_modules
.
├── lerna-debug.log
├── lerna.json
├── package-lock.json
├── package.json
├── packages
│ ├── animal
│ │ ├── README.md
│ │ ├── __tests__
│ │ │ └── animal.test.js
│ │ ├── lib
│ │ │ └── animal.js
│ │ └── package.json
│ ├── cat
│ │ ├── README.md
│ │ ├── __tests__
│ │ │ └── cat.test.js
│ │ ├── lib
│ │ │ └── cat.js
│ │ └── package.json
│ └── dog
│ ├── README.md
│ ├── __tests__
│ │ └── dog.test.js
│ ├── lib
│ │ └── dog.js
│ └── package.json
└── pnpm-lock.yaml
lerna list
列出所有的本地包
$ lerna list
info cli using local version of lerna
lerna notice cli v5.4.3
animal
cat
dog
lerna success found 3 packages
lerna add
添加本地包或者远程包作为包的依赖
# 添加的 animal 作为 dog、cat 的依赖
lerna add animal
# 向 dog 中添加 cat 作为依赖
lerna add cat --scope=dog
lerna link
建立存在依赖关系的包之间的软连接
$ lerna link
建立软链之后,就可以相互引用了
lerna bootstrap
建立相互依赖的包之间的软连接并安装其他的依赖
$ lerna bootstrap
lerna run
在包目录下执行对应的脚本
# 在所有的包目录下执行测试
$ lerna run test
# 在dog 包目录下执行测试
$ lerna run test --scope=dog
lerna clean
移除所有 package 下的 node_modules,除了根目录下的 node_modules
$ lerna clean
参考
Lerna 小白入门