内容简介:以下命令以
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协议的正确使用场合(谨慎使用)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
测试驱动开发的艺术
Lasse Koskela / 李贝 / 人民邮电出版社 / 20101023 / 59.00元
在传统的软件开发中,开发人员对于代码是否正确心中无底,一切依赖于后期的测试环节。极限编程反其道而行之,主张采用测试驱动开发(TDD)的方法,即通过测试定义所要开发的功能的接口,然后实现功能的开发过程。TDD通过不断地测试推动代码的开发,既简化了代码,又保证了软件质量。 本书采用“手把手”的教学方式,通过大量实例来解释TDD,还专门用几章的篇幅来讲解如何为难于测试的技术编写单元测试。全书内容循......一起来看看 《测试驱动开发的艺术》 这本书的介绍吧!