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

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

查看所有标签

猜你喜欢:

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

数学世纪

数学世纪

皮耶尔乔治·奥迪弗雷迪 / 胡作玄、胡俊美、于金青 / 上海科学技术出版社 / 2012-1 / 28.00元

《数学世纪:过去100年间30个重大问题》以简短可读的方式论述了整个20世纪的数学。20世纪的数学博大精深,新兴领域及学科的建立发展,许多经典问题得到解决,大量新的有意义的问题的引入,为数学带来了活力。《数学世纪:过去100年间30个重大问题》介绍了数学基础,20世纪的纯粹数学、应用和计算数学,以及目前未解的重要问题,中间穿插了希尔伯特的23个问题的解决情况、菲尔兹奖和沃尔夫奖得主的工作成就等。一起来看看 《数学世纪》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

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

在线 XML 格式化压缩工具