内容简介:以下命令以
lerna
用于管理多 package
,且各 package
可能会互相引用的项目。
lerna
通过两种方式管理子项目的版本号
-
Fixed/Locked mode (default):每次执行
lerna publish都会将所涉及到的包升级到最新一个版本,开发者只需要确定发布下一个version。 -
Independent mode:由开发者自行管理子项目的
version,每次执行lerna publish都需要确定每个包的下个版本号。
基本使用
以下命令以 yarn
为主。
Install 安装
yarn global add lerna
Init 初始化项目
lerna init
命令执行完毕后,会在生成对应的目录结构。
lerna-repo/
package.json
lerna.json
packages/
package-1/
package.json
package-2/
package.json
复制代码
Lerna.json 配置
{
"version": "1.1.3", // 项目版本
"npmClient": "npm", // 默认使用的npm,可改为yarn
"command": { // lerna 内置命令的配置
"publish": {
"ignoreChanges": ["*.md", "**/test/**",], // 发布时忽略部分文件的改动,配置此项可以减少不必要的publish。
"message": "chore(release): publish" // git commit message
},
},
"packages": ["packages/*"]
}
复制代码
Create 创建子项目
lerna create <name>
创建一个子项目,并会根据交互提示生成对应的 package.json
Add 添加依赖
lerna add <package>[@version] [--dev] [--exact]
-
lerna add eslint: 所有包都会装上eslint。 -
lerna add eslint --scope=package1:只有package1会装上。 -
lerna add eslint packages/prefix-*:符合prefix的包会装上。
options:
-
-dev:添加到devDependencies -
--exact: 只安装特定版本
如果添加的是子项目,则会通过 link
软连接到对应的项目中。 lerna add package1 --scope=package2
Run 执行npm script命令
lerna run <script> -- [..args]
-
lerna run test:则会执行所有子项目中的test。 -
lerna run --scope package1 test:只执行package1中的test。 -
lerna run --ignore package-* test:只执行除了匹配package-*外的项目中的test
Exec 执行任意命令
lerna exec -- <command> [..args]
与 lerna run
类似,只不过它可以执行任意命令。
eg: lerna exec -- rm -rf ./node_modules
其他命令
-
lerna bootstrap:安装各子项目依赖,对相互引用的项目进行软连接,在子项目中执行npm run prepublish和npm run prepare-
--hoist [glob]:会将子项目的匹配的依赖(eg:eslint,jest等),统一放在根目录的node_modules中,减少安装时间,但仅限npmClient=npm -
—nohoist [glob]: 匹配的依赖(eg:babel)会安装到子项目中的node_modules中
-
-
lerna clean:删除子项目的node_modules -
lerna link:同bootstrap第二步。
进阶使用
Lerna-changelog
lerna-changelog
基于 pr
来为项目生成 changelog
可参考 repo
使用步骤
-
从
master分支切换出feature/bugfix等分支,参考 git-flow 。 -
完成开发后进行
commit,推荐使用 commitizen 来规范commit msg,同时有助于对后续子项目生成changelog。 -
将新分支
push到remote端。 -
创建
pr,并打上label,此处一定要打上label,learn-changelog就是根据label来确定该pr属于feature/bugfix/document等。 -
切记要在
merge之前打上label。 -
进行
merge pr操作。 -
本地切换到
master分支并进行pull操作。 -
执行
lerna-changelog,既可得到一份changeling。
注意
pr
的 label
并不能随意设置,一定要在项目中声明对应才生效。
官方默认支持 breaking
/ enhancement
/ bug
/ documentation
/ internal
,如果想用其他,则需要在 package.json
中进行相应的配置。
{
"changelog": {
"labels": {
"feat": ":rocket: New Feature",
"bug": ":bug: Bug Fix",
"doc": ":memo: Documentation",
"internal": ":house: Internal",
"breaking": ":boom: Breaking Change"
}
}
}
复制代码
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- RecyclerView使用指南(一)—— 基本使用
- 如何使用Meteorjs使用URL参数
- 使用 defer 还是不使用 defer?
- 使用 Typescript 加强 Vuex 使用体验
- [译] 何时使用 Rust?何时使用 Go?
- UDP协议的正确使用场合(谨慎使用)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Mastering Regular Expressions, Second Edition
Jeffrey E F Friedl / O'Reilly Media / 2002-07-15 / USD 39.95
Regular expressions are an extremely powerful tool for manipulating text and data. They have spread like wildfire in recent years, now offered as standard features in Perl, Java, VB.NET and C# (and an......一起来看看 《Mastering Regular Expressions, Second Edition》 这本书的介绍吧!