lerna 基本使用(创建, 发布, 命令)
夏灬影 -目前网上lerna的教程不是很清楚, 所以我自己整理并且实践的笔记
创建项目$ mkdir lerna-repo && cd lerna-repo
$ npm init
// 本地目录安装
$ npm i lerna -D
$ npx lerna init
// or 全局安装
$ npm install --global lerna
$ lerna init
目录结构
lerna-repo/
packages/
core/
utils/
package.json
lerna.json
这里我们将项目分成2个子包, 后面会教大家创建
一个core子项目, 一个utils子项目
lerna create <name> [loc(指定目录)]
// lerna create core
// lerna create utils
lerna add安装依赖lerna add <package>[@version] [--dev] [--exact] [--peer]
比如
lerna add fetch
package目录下的子项目都会安装到
指定package安装(utils名称的子项目)
lerna add fetch packages/utils/
命令常用命令lerna link链接子包与子包之间的依赖(本地)# core/ package.json
...
"dependencies": {
"fetch": "^1.1.0",
"@xxx/utils": "^1.0.4" // xxx为对应子包utils上面的package.json中的name
},
...
接下来运行lerna link
node_modules添加的包地址指向本地子包utils
将core和utils的package.json修改
...
"scripts": {
"test": "echo \"Run test from utils\""
},
...
运行lerna run test
echo "Run test from utils"
"Run test from utils"
lerna info run Ran npm script 'test' in '@xxx/core' in 0.9s:
> echo "Run test from core"
"Run test from core"
指定运行
lerna run --scope @xxx/utils test
lerna clean清空package子项目的node_modules
lerna bootstrap安装package子项目的依赖(node_modules)
补充命令lerna exec执行命令行# 删除所有子包中的node_modules
lerna exec -- rm -rf node_modules/
# 删除指定utils子包中的node_modules
lerna exec --scope @xxx/utils rm -rf node_modules/
发布操作git绑定远程仓库
npm login进行登录和创建Organization 仓库(Unlimited public packages)
lerna publish发布一个版本记得publish之前绑定远程仓库和npm的Organization
ps: 正常更新git push
, 版本替换的时候才使用lerna publish
>lerna publish
lerna notice cli v4.0.0
lerna info current version 1.0.7
lerna info Looking for changed packages since v1.0.7
? Select a new version (currently 1.0.7) (Use arrow keys)
> Patch (1.0.8)
Minor (1.1.0)
Major (2.0.0)
Prepatch (1.0.8-alpha.0)
Preminor (1.1.0-alpha.0)
Premajor (2.0.0-alpha.0)
Custom Prerelease
Custom Version
lerna publish
选择Patch会更新的子包中的package.json的version更改为指定版本
lerna会自动生成git tag(版本标签)上传github上, 和自动上传npm的版本号(对应更新的子包)
lerna diff查看包的本地修改# core/ index.js
function core() {
// TODO
+ console.log("core")
}
特别申明:本文内容来源网络,版权归原作者所有,如有侵权请立即与我们联系(cy198701067573@163.com),我们将及时处理。
下一篇: 前端面试每日 3+1 —— 第931天