概念
1.lerna 是什么
Lerna 是一个用来优化托管在git\npm上的多package代码库的工作流的一个管理工具,可以让你在主项目下管理多个子项目,从而解决了多个包互相依赖,且发布时需要手动维护多个包的问题。目前babel、react都使用了lerna的多包管理。
2.lerna 基本结构
lerna-project/
|-- packages/
|-- packages-a/
|-- ...
|-- package.json
|-- packages-b/
|-- ...
|-- package.json
|-- ...
|-- lerna.json
|-- package.json
项目构建
- npm i -g lerna
- 初始化项目
1. 新建文件夹
2. npm init -y
3. lerna init
- 增加2个 packages
/*@gjl-lerna-demo 这个是你在 npm 将要新建组织名,便于之后的发布*/
lerna create @gjl-lerna-demo/view
lerna create @gjl-lerna-demo/utils
// create 命令详情 请参考 lerna create
- 分别给相应的 package 增加依赖模块
lerna add chalk // 为所有 package 增加 chalk 模块
lerna add semver --scope @gjl-lerna-demo/utils // 为 @gjl-lerna-demo/utilss 增加 semver 模块
lerna add @gjl-lerna-demo/log --scope @gjl-lerna-demo/utils // 增加内部模块之间的依赖
- lerna 常用命令
命令 | 描述 |
---|---|
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 | 发布 |
项目发布
发布前准备
1.每个包下的 package.json 文件需要进行配置
"publishConfig": {
"registry": "https://registry.npm.taobao.org/",
"access": "public"
},
2.申请npm 账号,新建组织,组织名要和 lerna create @xxxx/yyy 中 xxxx 对应
发布
1.将本地代码推送至远程 git 仓库
2.npm login 输入 账号密码
3.lerna publish 发布到 npm 仓库
备注:只要操作lerna publish命令, 一定要先推送至远程仓库
4.发布成功,之后别人就可以使用 npm 安装了,npm i @xxxx/yyy -D