We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
lerna用于管理多package,且各package可能会互相引用的项目。
package
lerna通过两种方式管理子项目的版本号:
lerna
lerna publish
version
以下命令以yarn为主。
yarn
yarn global add lerna
lerna init 命令执行完毕后,会在生成对应的目录结构。
lerna init
lerna-repo/ package.json lerna.json packages/ package-1/ package.json package-2/ package.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/*"] }
lerna create <name> 创建一个子项目,并会根据交互提示生成对应的package.json
lerna create <name>
package.json
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
link
lerna add package1 --scope=package2
lerna run <script> -- [..args]
lerna run test
test
lerna run --scope package1 test
lerna run --ignore package-* test
package-*
lerna exec -- <command> [..args]
与lerna run类似,只不过它可以执行任意命令。 eg: lerna exec -- rm -rf ./node_modules
lerna run
lerna exec -- rm -rf ./node_modules
lerna bootstrap
npm run prepublish
npm run prepare
--hoist [glob]
jest
node_modules
npmClient=npm
—nohoist [glob]
babel
lerna clean
lerna link
bootstrap
lerna-changelog基于pr来为项目生成changelog
pr
changelog
可参考repo
master
feature
bugfix
commit
commit msg
push
remote
label
learn-changelog
document
merge
merge pr
pull
lerna-changelog
changeling
pr的label并不能随意设置,一定要在项目中声明对应才生效。
官方默认支持breaking/enhancement/bug/documentation/internal,如果想用其他,则需要在package.json中进行相应的配置。
breaking
enhancement
bug
documentation
internal
{ "changelog": { "labels": { "feat": ":rocket: New Feature", "bug": ":bug: Bug Fix", "doc": ":memo: Documentation", "internal": ":house: Internal", "breaking": ":boom: Breaking Change" } } }
尚未实践过,具体还需参考README
lerna的使用已介绍完毕,上述内容可满足日常开发需求,更多详情还需参考官方文档。
The text was updated successfully, but these errors were encountered:
为啥你的字体这么小这么好看....怎么设置的
Sorry, something went wrong.
还有就是问个问题。我lerna create xxx之后。我根目录的node_modules下为什么没有我新create的子项目的软连接呢。望解惑!
@vayne1Q 应该是有相互依赖的子模块才会建立软连接, 根目录不依赖子模块吧
哦哦。这样嘛。我一直理解成了只要通过lerna create创建的子项目。就会在根目录下的node_modules创建软连接呢。现在知道了。谢谢作者
No branches or pull requests
lerna用于管理多
package
,且各package
可能会互相引用的项目。lerna
通过两种方式管理子项目的版本号:lerna publish
都会将所涉及到的包升级到最新一个版本,开发者只需要确定发布下一个version
。version
,每次执行lerna publish
都需要确定每个包的下个版本号。基本使用
以下命令以
yarn
为主。Install 安装
yarn global add lerna
Init 初始化项目
lerna init
命令执行完毕后,会在生成对应的目录结构。
Lerna.json 配置
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
尚未实践过,具体还需参考README
结语
lerna
的使用已介绍完毕,上述内容可满足日常开发需求,更多详情还需参考官方文档。The text was updated successfully, but these errors were encountered: