lerna以及lerna-changelog使用

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

内容简介:以下命令以

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"
    }
  }
}
复制代码

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

查看所有标签

猜你喜欢:

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

测试驱动开发的艺术

测试驱动开发的艺术

Lasse Koskela / 李贝 / 人民邮电出版社 / 20101023 / 59.00元

在传统的软件开发中,开发人员对于代码是否正确心中无底,一切依赖于后期的测试环节。极限编程反其道而行之,主张采用测试驱动开发(TDD)的方法,即通过测试定义所要开发的功能的接口,然后实现功能的开发过程。TDD通过不断地测试推动代码的开发,既简化了代码,又保证了软件质量。 本书采用“手把手”的教学方式,通过大量实例来解释TDD,还专门用几章的篇幅来讲解如何为难于测试的技术编写单元测试。全书内容循......一起来看看 《测试驱动开发的艺术》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具