Lerna
Lerna 是一个管理工具,用于管理包含多个软件包(package)的 JavaScript 项目。
将大型代码库拆分为独立的独立版本包对于代码共享非常有用。 然而,在许多存储库中进行更改是麻烦和难以跟踪的事情。为了解决这些(和许多其他)问题,一些项目将它们的代码库组织成多包存储库。 像 Babel、React、Angular、Ember、Meteor、Jest 等等。
用法
- 推荐使用 Lerna 2.x 版本
npm install --global lerna
- 创建一个新的 git 代码仓库
git init lerna-repo && cd lerna-repo
- 将上述仓库转变为一个 Lerna 仓库:
lerna init - 你的代码仓库目前应该是如下结构:
命令
lerna init
常见一个新的 lerna 仓库(repo)或将现有的仓库升级为适配当前 版本的 Lerna
参数: --independent/-i – 使用独立的 版本控制模式。
lerna bootstrap
在当前 Lerna 仓库中执行引导流程(bootstrap)。安装所有依赖项并链接任何交叉依赖。
此命令至关重要,因为它让你可以 在 require() 中直接通过软件包的名称进行加载,就好像此软件包已经存在于 你的 node_modules 目录下一样。
lerna import <pathToRepo>
将本地路径 <pathToRepo> 中的软件包导入(import) packages/<directory-name> 中并提交 commit。
lerna publish
为已经更新过的软件包创建一个新版本。提示输入新版本号并更新 git 和 npm 上的所有软件包。
参数:
--npm-tag [tagname] — 使用给定的 npm dist-tag (默认为 latest)发布到 npm。
--canary/-c – 创建一个 canary 版本。
--skip-git – 不要运行任何 git 命令。
--force-publish [packages] — 强制发布 指定的一个或多个软件包(以逗号分隔)或使用 * 表示所有软件包(对于修改过的软件包跳过 git diff 检查)。
lerna changed
检查自上次发布以来哪些软件包被修改过。
lerna diff [package?]
列出所有或某个软件包自上次发布以来的修改情况。
lerna run [script]
在每一个包含 [script] 脚本的软件包中运行此 npm 脚本。
lerna ls
列出当前 Lerna 仓库中的所有公共软件包(public packages)。
lerna-repo/
packages/
package.json
lerna.json
lerna.json解析
{
"version": "1.1.3",
"npmClient": "npm",
"command": {
"publish": {
"ignoreChanges": ["ignored-file", "*.md"],
"message": "chore(release): publish",
"registry": "https://npm.pkg.github.com"
},
"bootstrap": {
"ignore": "component-*",
"npmClientArgs": ["--no-package-lock"]
}
},
"packages": ["packages/*"]
}
- version: 当前仓库版本
- npmClient: 指定运行的命令,使用yarn则改成"yarn";默认"npm"
- command.publish.ignoreChanges: 全局的数组,lerna更改/发布则不包含这个数组;使用此选项可以防止不必要地发布新版本以进行更改,例如修复README.md错误。
- command.publish.message: 执行发布版本更新时的自定义提交消息。
- command.publish.registry: 使用它设置自定义源来代替npmjs,必须已经过身份验证。
- packages: 全局的数组,作为使用package的地方。
- command.bootstrap.ignore: 当执行lerna bootstrap时忽略数组里的命令
- command.bootstrap.npmClientArgs: 执行lerna bootstrap时,数组里的字符将作为参数直接传递给npm install
网友评论