专栏首页方球Commitizen 从0到1(git commit 规范工具)

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

简介

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

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

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

安装

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

// 本地安装

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • git commit规范化实践

    最近从svn转到git进行代码版本控制,今天了解了git commit规范化的一些知识后,写此文章记录下配置过程。

    寻找石头鱼
  • 让你的 commit 更有价值

    AngularJS 在开发者文档1中关于 git commit 的指导说明,提到严格的 git commit 格式规范可以在浏览项目历史的过程中看到更易读的信息...

    陈大鱼头
  • 你可能已经忽略的git commit规范

    在日常的开发工作中,我们通常使用 git 来管理代码,当我们对代码进行某项改动后,都可以通过 git commit 来对代码进行提交。

    前端森林
  • Git提交信息规范化

    message信息格式采用目前主流的Angular规范,这是目前使用最广的写法,比较合理和系统化,并且有配套的工具。

    奋飛
  • 【Git】:Commit规范 + CHANGELOG生成

    从 git commit 的 message 开始进行规范化(主流:angular 规范),进而可以通过工具(例如:conventional-changelog...

    WEBJ2EE
  • commitlint 从0到1 (git commit 校验工具)

    'https://github.com/conventional-changelog/commitlint/#what-is-commitlint',

    copy_left
  • 前端自动化部署的深度实践

    之前我都是手动修改CHANGELOG.md,用来记录更新日志,感觉操作起来有点心累,也不是很规范。好在已有前人种树,于是我就考虑利用conventional-c...

    Tusi
  • 【技术建设】规范git commit的提交记录(交互式命令行)

    随着项目体积的增加,参与到项目中的同学越来越多,每个人都有自己的打 git log 的习惯:

    心谭博客
  • 开箱即用的代码提交规范

    在团队中代码提交(git commit)会有各种各样的风格,甚至有些人根本没有 commit 规范的概念,所以在我们回头去查找在哪个版本出现问题的时候,就会非常...

    用户4131414
  • 【推荐】git commit 规范和如何在 commit 里使用 emoji

    大家好,我是桃翁,今天给大家带来的是关于 git commit 那些事儿,希望大家喜欢。

    桃翁
  • 别乱提交代码了,看下大厂 Git 提交规范是怎么做的!

    现在市面上比较流行的方案是约定式提交规范(Conventional Commits),它受到了Angular提交准则的启发,并在很大程度上以其为依据。约定式提交...

    芋道源码
  • 一文搞定 Conventional Commits

    规范化 git commit 对于提高 git log 可读性、可控的版本控制和 changelog 生成都有着重要的作用。然而阻碍我们脚步的不只是团队的推广,...

    用户1250838
  • 别乱提交代码了,看下大厂 Git 提交规范是怎么做的!

    现在市面上比较流行的方案是约定式提交规范(Conventional Commits),它受到了Angular提交准则的启发,并在很大程度上以其为依据。约定式提交...

    Erwin
  • 从 0 开始手把手带你搭建一套规范的 Vue3.x 工程化项目

    Vue3 跟 Vite 正式版发布有很长一段时间了,生态圈也渐渐丰富起来,作者已在多个项目中使用,总结一下:就是快!也不用担心稳定性问题,开发体验真不是一般好!...

    XPoet
  • 别乱提交代码了,看下大厂 Git 提交规范是怎么做的!

    git是现在市面上最流行的版本控制工具,书写良好的commit message能大大提高代码维护的效率。但是在日常开发中由于缺少对于commit message...

    搜云库技术团队
  • 别乱提交代码了,看下大厂 Git 提交规范是怎么做的

    现在市面上比较流行的方案是约定式提交规范(Conventional Commits),它受到了Angular提交准则的启发,并在很大程度上以其为依据。约定式提交...

    IT大咖说
  • 一套标准的前端代码工作流

    工欲善其事,必先利其器。对于写代码而言,也是需要有一套完善的工作流(工具和流程)。

    逆锋起笔
  • 基于 Lerna 管理 packages 的 Monorepo 项目最佳实践

    对于维护过多个package的同学来说,都会遇到一个选择题,这些package是放在一个仓库里维护还是放在多个仓库里单独维护,本文通过一个示例讲述了如何基于Le...

    杨振涛
  • Commitizen 互联网公民的简单提交惯例

    安装就像运行以下命令一样简单(如果看到 EACCES 错误,阅读 修复 npm 权限 可能有帮助):

    iOSDevLog

扫码关注云+社区

领取腾讯云代金券