前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Commitizen 从0到1(git commit 规范工具)

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

作者头像
copy_left
发布2021-07-01 10:24:35
1.1K0
发布2021-07-01 10:24:35
举报
文章被收录于专栏:方球方球

简介

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

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

代码语言:javascript
复制
<type>(<scope>):<subject> // Header
// 空行
<body>
// 空行
<footer>
  • Header 信息头 (必须)
    • type commit类型(必须)
    • scope commit 作用范围
    • subject commit 表述(必须)
  • body commit 详细信息
  • footer 辅助信息: 1. 不兼容变动 2. 关闭 Issue

安装

  • 首先需要安装commitizen 工具本身

// 本地安装

代码语言:javascript
复制
npm i --save-dev commitizen
  • 配置命令
代码语言:javascript
复制
// package.json
{
  "script": {
    "commit": "cz"
   }
}

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

代码语言:javascript
复制
// 添加差异
git add *
// 执行 commit 命令
npm run commit

image.png

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

  • 安装规则包
代码语言:javascript
复制
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

代码语言:javascript
复制
 // 新增配置文件 
touch .cz.json

image.png

自定义规则包

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

新建包

代码语言:javascript
复制
// root
// 新建目录
md commit-rule
// npm 初始化
npm init -y
// 新增入口文件
touch index.js

编写包内容

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

代码语言:javascript
复制
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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 安装
  • 自定义配置
    • package.json
      • 配置文件
        • 新建包
        • 编写包内容
        • 执行 commit
    • 自定义规则包
      • 参考文档
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档