解释:
- 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
参考