Commitizen 从0到1(git commit 规范工具)

2021-06-28  本文已影响0人  copyLeft

简介

commitizen git commit 格式化工具, 为我们提供标准化的 commit 信息。 帮助我们统一项目commit , 便于信息的回溯或日志的生成。# commit message 格式

commitizen 只是提供一个commit 格式化或交互工具, 最终需要输出符合 commit 规则的信息给 git, 所以需要线了解 commit 格式规则

<type>(<scope>):<subject> // Header
// 空行
<body>
// 空行
<footer>

安装

// 本地安装

npm i --save-dev commitizen
// package.json
{
  "script": {
    "commit": "cz"
   }
}

现在我们尝试调用一次工具命令

// 添加差异
git add *
// 执行 commit 命令
npm run commit
image.png

这里我们进入commit 编辑, 执行结果于git commit 一致, 那交互呢?
其实commitizen 一般使用需要配合对应的规则模块。 通过规则模块规范化commit 信息。
官方和社区提供了预设的规则包。

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

安装完成后, package.json 内将新增 commitizen 配置

image.png

这里的 "path" 指向的是本地的配置模块文件

执行 npm run commit

image.png

自定义配置

package.json

通过修改 package.json config 属性,设置自定义配置

image.png image.png

这里我们自定义的配置覆盖了原类型交互。

配置文件

通过查看源码, 可以发现,Commitizen 默认加根目录下的 .czrc .cz.json 配置文件

image.png
 // 新增配置文件 
touch .cz.json
image.png

自定义规则包

类似包 cz-conventional-changelog , 我们可以编写自定义的交互规则包.

新建包

// root
// 新建目录
md commit-rule
// npm 初始化
npm init -y
// 新增入口文件
touch index.js

编写包内容

Commitizen 将调用模块内的 prompter 函数获取 commit 信息

function prompter(cz, commit) {


  // cz 提供基础的交互能力, 搜集 commit 信息
  // commit 提交搜集的信息


  cz.prompt([
    {
      type: 'input',
      name: 'type',
      message: '类型',
    },
    {
      type: 'input',
      name: 'scope',
      message: '作用范围',
    },
    {
      type: 'maxlength-input',
      name: 'subject',
      message: '概要',
      maxLength: 20
    }
  ]).then(answers => {
    const { type, scope, subject } = answers
    const message = `
      ${type}(${scope}):${subject}
      
      time: ${new Date().getTime()}
    `
    commit(message)
  })


// 导出规则函数
module.exports = {
  prompter
}

### 导入自定义包

// .cz.json
{
  "path": "./commit-rule"
}

执行 commit

image.png image.png

根据我们自定义的规则, 成功提交了commit信息

这里只是简单的例子, 介绍简单的编写过程。 我们还可以实现更详细的信息规则或不同交互工具, 例如: inquirer Color 等 ,毕竟前端信息收集格式化都是可自定义的,最后commit 符合 git 规则的信息就可以了。

参考文档

Commit message 和 Change log 编写指南 - 阮一峰的网络日志
官方github

上一篇下一篇

猜你喜欢

热点阅读