3.7 KiB
3.7 KiB
nav | group | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
|
lerna
介绍
lerna 是一个包管理工具,方便在大型开源项目中不需要手动开启多个仓库
使用方法
安装
npm i lerna -g
创建子项目
lerna create {packageName}
添加依赖
// 此处用eslint作为案例
// 所有 package 都装
lerna add eslint
// 只有 package1 安装
lerna add eslint --scope=package1
// 符合 prefix 的包都会安装
lerna add esint packages/prefix-*
-dev:添加到 devDependencies --exact:只安装特定版本
执行 npm script 命令
// 执行所有子项中的 test
lerna run test
// 执行 package1 中的 test
lerna run --scope package1 test
// 只执行除了匹配package-*外项目中的 test
lerna run --ignore package-* test
查看哪些包需要发布
lerna updated
- 决定哪一个包需要被 publish
发布依赖包
learna publish
建议使用 independent 模式,独立对每个依赖包做管理
--npm-client=cnpm 指定源
常见命令
命令 | 说明 |
---|---|
lerna bootstrap | 安装依赖 |
lerna clean | 删除各个包下的 node_modules |
lerna init | 创建新的 lerna 库 |
lerna list | 显示 package 列表 |
lerna changed | 显示自上次 relase tag 以来有修改的包, 选项通 list |
lerna diff | 显示自上次 relase tag 以来有修改的包的差异, 执行 git diff |
lerna exec | 在每个包目录下执行任意命令 |
lerna run | 执行每个包 package.json 中的脚本命令 |
lerna add | 添加一个包的版本为各个包的依赖 |
lerna import | 引入 package |
lerna link | 链接互相引用的库 |
lerna create | 新建 package |
lerna publish | 发布 |
🌰
lerna exec [--scope <package包名(package.json中的name)>] -- <command> [..args]
# 举个例子
lerna exec -- rm -rf node_modules # 删除所有package下的node_modules
lerna exec --scope @yh-imooc-cli-dev/core -- rm -rf node_modules # 碰到scope,说明定位到@yh-imooc-cli-dev/cor包下(注意:--scope后面写的是包名),然后删除当前子包下的node_modules
官方文档
http://www.febeacon.com/lerna-docs-zh-cn/
Q&A
1. 发布包提示 lerna ERR! ENOREMOTEBRANCH Branch 'master' doesn't exist in remote 'origin'.
git remote -v 查看是否是 origin 指向的分支,推送最新分支 lerna publish
2. lerna ERR! E402 You must sign up for private packages
在相应包的 package.json 添加
{
...
"publishConfig": {
"access": "public"
}
}
3. 使用 father 打包报错
如果是使用的 yarn 安装的包,改成 cnpm 安装,再试一次
4. lerna ERR! yarn install --mutex network:42424 --non-interactive exited 1 in 'root'
不要使用 yarn bootstrap 改为 lerna bootstrap
5. 疯狂报 ts 类的错误
{
"compilerOptions": {
"typeRoots": ["./typings"]
}
}