committezen & standard-version规范提交信息和自动化版本控制

前言

git作为一个开发人员必不可少的工具,代码提交也是日常一个非常频繁的操作,规范提交信息肯定是有必要的。
如果手动按照规范提交代码,不免觉着有点麻烦。怎么办呢?最好是可以使用一个工具。
commitizen就是一个比较合适的git提交规范信息的工具,commitizen可以帮助团队规范化commit提交格式信息,有利于追溯代码。
使用commitizen 进行规范提交提交后,我们就可以使用 standard-version自动化版本控制,例如更新 CHANGELOG.md。

一. Committezen规范提交信息

当你使用Committezen提交时,系统会提示您在提交时填写所有必需的提交字段, 不需要再深入研究commit提交信息首选格式;命令行上获取有关提交消息格式的即时反馈,并提示输入必填字段即可。

规范提交信息
  1. 规范提交信息的好处如下:
  • 清晰的历史记录,让开发人员高效地追溯代码
  • 自动化生成CHANGELOG.MD
  • 基于提交的类型,自动决定语义化的版本变更
  • 基于提交类型,触发构建和部署自动化流程
[optional scope]: 
//空一行
[optional body]
//空一行
[optional footer(s)]

type 提交的类别,必须是以下类型中的一个:

feat:增加一个新功能
fix:修复bug
docs:只修改了文档
style:做了不影响代码含义的修改,空格、格式化、缺少分号等等
refactor:代码重构,既不是修复bug,也不是新功能的修改
perf:改进性能的代码
test:增加测试或更新已有的测试
chore:构建或辅助工具或依赖库的更新

话不多说,开始实际操作。

Installing

First,安装Committeen cli工具

npm install commitizen -D

Next,命令行执行以下命令初始化项目:

commitizen init cz-conventional-changelog --save-dev --save-exact

Or 使用Yarn:

commitizen init cz-conventional-changelog --yarn --dev --exact

Then,将config.commitizen添加到package.json的根目录中,如下所示:

"config": {
    "commitizen": {
      "path": "cz-conventional-changelog"
    }
 }

package.json中增加如下脚本:

"scripts": {
  "commit" : "git-cz"
}
现在可以npm run commit,操作如下:
  • git add . 文件
  • npm run commit,此时 commitizen 会通过 CLI 对我们进行询问:


    image.png
  • 选择提交类型后,根据实际情况填写详细信息:


    image.png

    image.png

    以上就实现半自动化规范提交信息了。

二. standard-version自动化版本控制

Installing
npm i -D standard-version
package.json的scripts中添加:
"scripts": {
  "commit" : "git-cz",
  "release": "standard-version" 
}
现在你可以使用 npm run release,操作如下:
  • git add . 文件
  • npm run commit
  • npm run release


    image.png

    上述操作即可完成CHANGELOG.md自动化版本控制。

自定义CHANGELOG.md生成

默认情况下standard-version 只会在 CHANGELOG.md 中记录 feat 和 fix 类型的提交,可以自定义,操作如下:

  • 根目录下创建文件: .versionrc, .versionrc.json or .versionrc.js
  • 以创建.versionrc为例,参考配置信息如下:
{
    "types": [
        {"type": "feat", "section": "Features"},
        {"type": "fix", "section": "Bug Fixes"},
        {"type": "chore", "hidden": true},
        {"type": "docs", "hidden": true},
        {"type": "style", "hidden": true},
        {"type": "refactor", "hidden": true},
        {"type": "perf", "hidden": true},
        {"type": "test", "hidden": true}
    ]
}
  • type用于匹配 Conventional Commits 使用的的字符串。
  • section匹配的提交类型将在CHANGELOG.md中显示的部分。
  • hidden设置为true可在CHANGELOG.md中隐藏匹配的提交类型。
    CHANGELOG.md-参考配置信息
参考文档:

规范GIT代码提交信息&自动化版本管理
约定式提交规范
commitizen不要在瞎提交git信息啦!
commitizen - github
commitizen - npm
standard-version - npm
standard-version - github

你可能感兴趣的:(committezen & standard-version规范提交信息和自动化版本控制)