Skip to content

自动版本管理和生成CHANGELOG

standard-version 介绍

一个用于生成CHANGELOG.md和进行SemVer(语义化版本号)发版的命令行工具; 主要功能:

  • 自动修改最新版本号,可以是package.json或者自定义一个文件
  • 读取最新版本号,创建一个最新的git tag
  • 根据提交信息,生成CHANGELOG.md
  • 创建一个新提交包括CHANGELOG.mdpackage.json

官方文档: http://www.npmdoc.org/standard-versionzhongwenwendangstandard-version-jszhongwenjiaochengjiexi.html standard-version 是帮助项目自动生成ChangeLog、升版本、打tag的工具,

在package.json 文件中添加脚本命令如下

text
  "scripts": {
    "release": "standard-version"
  },

那么在命令行执行 yarn release 时它会:

  • 取得当前版本(比如package.json里面的version字段),升版本:1.0.0 => 1.1.0 或者 1.0.0 => 2.0.0等(如何升级可以由参数控制)
  • 基于commits生成ChangeLog文件
  • 提交一个commit,包含ChangeLog和版本变更的文件
  • 打tag

CHANGELOG.md 配置

standard-verstion 生成的CHANGELOG只会包含feat,fix,BREACK-CHANGE类型的提交记录, 如果想记录其他类型的提交,需要根目录下创建一个名为 .versionrc 的文件。代码如下:

text
// .versionrc
    {
      "types": [
        {"type": "chore", "section":"Others", "hidden": false},
        {"type": "revert", "section":"Reverts", "hidden": false},
        {"type": "feat", "section": "Features", "hidden": false},
        {"type": "fix", "section": "Bug Fixes", "hidden": false},
        {"type": "improvement", "section": "Feature Improvements", "hidden": false},
        {"type": "docs", "section":"Docs", "hidden": false},
        {"type": "style", "section":"Styling", "hidden": false},
        {"type": "refactor", "section":"Code Refactoring", "hidden": false},
        {"type": "perf", "section":"Performance Improvements", "hidden": false},
        {"type": "test", "section":"Tests", "hidden": false},
        {"type": "build", "section":"Build System", "hidden": false},
        {"type": "ci", "section":"CI", "hidden":false}
      ]
    }

说明:

  • type" commit 类型
  • "section" 不同的 commit 类型所在CHANGELOG.md中的区域
  • "hidden" 是否在CHANGELOG.md中显示

语义化版本控制(SemVer)

语义化的版本控制是由GitHub发起的一份用于规范版本号递增的规则;

版本格式

主版本号.次版本号.修订号,版本号递增规则如下:

text
-   主版本号(major):当你做了不兼容的 API 修改,
-   次版本号(minor):当你做了向下兼容的功能性新增,可以理解为Feature版本,
-   修订号(patch):当你做了向下兼容的问题修正,可以理解为Bug fix版本。

先行版本号可以加到“主版本号.次版本号.修订号”的后面,作为延伸。

先行版本

当即将发布大版本改动前,但是又不能保证这个版本的功能 100% 正常,这个时候可以发布先行版本:

text
-   alpha: 内部版本
-   beta: 公测版本
-   rc: 候选版本(Release candiate)

比如:1.0.0-alpha.0,1.0.0-alpha.1,1.0.0-rc.0,1.0.0-rc.1等。

standard-version 会根据提交的信息类型来自动更改对应的版本号,如下:

text
-   feat: 次版本(minor)+1
-   fix: 修订号(patch) +1
-   BREAK CHANGE: 主板号(marjor) +1

Contributors

作者:Long Mo
字数统计:705 字
阅读时长:2 分钟
Long Mo
文章作者:Long Mo
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Longmo Docs