lerna以及lerna-changelog使用

栏目: Node.js · 发布时间: 6年前

内容简介:以下命令以

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 prepublishnpm 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
  • 将新分支 pushremote 端。
  • 创建 pr ,并打上 label ,此处一定要打上 labellearn-changelog 就是根据 label 来确定该 pr 属于 feature / bugfix / document 等。
  • 切记要在 merge 之前打上 label
  • 进行 merge pr 操作。
  • 本地切换到 master 分支并进行 pull 操作。
  • 执行 lerna-changelog ,既可得到一份 changeling

注意

prlabel 并不能随意设置,一定要在项目中声明对应才生效。

官方默认支持 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"
    }
  }
}
复制代码

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Mastering Regular Expressions, Second Edition

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》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具