共计 1825 个字符,预计需要花费 5 分钟才能阅读完成。
lerna 介绍
lerna 解决机构
固定模式(fixed)
所有包是对立的版本号,每次降级,所有包版本对立更新,不论这个包内容扭转与否
具体体现在,lerna
的配置文件 lerna.json
中永远会存在一个确定版本号:
{"version": "0.0.1"}
典型例子:babel
、vue
独立模式(independent)
每个包是独自的版本号,每次 lerna 触发发布命令,每个包的版本都会独自变动
具体体现在,lerna
的配置文件 lerna.json
中没有一个确定版本号,而是:
{"version": "independent"}
lerna 装置
npm install lerna -g | |
lerna -v |
lerna 初始化
代码标准采纳 lerna
提供的标准构造的话:
# 默认固定模式 | |
lerna init | |
# 要采纳独立模式的话 | |
lerna init -i | |
# lerna init --independent |
生成的代码构造
└── lerna/ | |
├── packages/ | |
├── lerna.json | |
└── package.json |
如果代码曾经存在,则只须要在我的项目下创立 lerna.json
并补充相干字段
{ | |
"useWorkspaces": true, // 应用 workspaces 配置。此项为 true 的话,将应用 package.json 的 "workspaces",上面的 "packages" 字段将不失效 | |
"version": "0.1.0", // 所有包版本号,独立模式 -"independent" | |
"npmClient": "cnpm", // npm client,可设置为 cnpm、yarn 等 | |
"packages": [ // 包所在目录,可指定多个 | |
"packages/*" | |
], | |
"command": { // lerna 命令相干配置 | |
"publish": { // 公布相干 | |
"ignoreChanges": [ // 指定文件或目录的变更,不触发 publish | |
".gitignore", | |
"*.log", | |
"*.md" | |
] | |
}, | |
"bootstrap": { // bootstrap 相干 | |
"ignore": "npm-*", // 不受 bootstrap 影响的包 | |
"npmClientArgs": [ // bootstr 执行参数 | |
"--no-package-lock" | |
] | |
} | |
} | |
} |
lerna 相干命令
lerna 官网文档 https://lerna.js.org/
初始化
创立一个新的
lerna
仓库或者将现有的仓库应用lerna
治理
lerna init # -i/--independent
Publish
公布包
lerna publish
Bootstrap
把所有包装置到根
node_modules
lerna bootstrap
Run
运行每个包中的
script
命令
lerna run <script> --[...args]
Exe
独自运行某个包下的
script
命令
lerna exec -- <command> [...args] | |
# example | |
$ lerna exec -- rm -rf ./node_modules | |
$ lerna exec -- protractor conf.js |
Add
装置本地或者近程的包
lerna add <package>[@version] [--dev] [--exact] [--peer] | |
#--dev 将新包增加到 devDependencies 而不是 dependencies. | |
#--exact 增加具备确切版本(例如 1.0.1)而不是默认 ^semver 范畴(例如 ^1.0.1)的新包。#--peer 将新包增加到 peerDependencies 而不是 dependencies. | |
#将 module-1 包增加到 'prefix-' 前缀文件夹中的包中 | |
lerna add module-1 packages/prefix-* | |
#将模块 1 装置到模块 2 | |
lerna add module-1 --scope=module-2 | |
#在 devDependencies 中将 module-1 装置到 module-2 | |
lerna add module-1 --scope=module-2 --dev | |
#在 peerDependencies 中装置 module-1 到 module-2 | |
lerna add module-1 --scope=module-2 --peer | |
#在除 module- 1 之外的所有模块中装置 module-1 | |
lerna add module-1 | |
#在所有模块中装置 babel-core | |
lerna add babel-core |
原文地址: https://kspf.xyz/archives/136
正文完
发表至: javascript
2021-08-12