Git commit校验工具commitlint的配置与使用

前端环境要求

node: 16.x
npm: 8.x

Tip:npm版本须大于等于 7.24.2,过低的话可能会导致下面有的命令无法使用,需要手动在 package.json 中自行设置。

工具

husky

操作 git 钩子的工具

commitlint

commit 信息校验工具

commitizen

commit自动化提示工具,简称cz

cz-customizable

可自定义的cz适配器

commitlint-config-git-commit-emoji

emoji插件

安装

安装husky工具

安装 husky插件
npm i husky -D
在package.json中添加脚本
npm set-script prepare "husky install" 
根目录创建.husky文件夹,将 git hooks 钩子交由husky执行
npm run prepare 
添加 commit-msg 钩子,执行信息校验
npx husky add .husky/commit-msg 'npx --no-install commitlint --edit "$1"'

安装commitlint

安装 commit 校验工具
npm i commitlint @commitlint/config-conventional -D
  • @commitlint/config-conventional 这是一个规范配置,标识采用什么规范来执行消息校验, 这个默认是Angular的提交规范
创建 commitlint.config.js 配置文件
echo "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.js

安装commitizen

安装自动化提示工具
npm i commitizen cz-conventional-changelog -D
package.json 中添加 commit 指令, 执行 git-cz 指令
npm set-script commit "git-cz" 
初始化命令行的选项信息
npx commitizen init cz-conventional-changelog --save-dev --save-exact

就可以在命令行中选择需要提交的git commit type了。
在这里插入图片描述

安装可自定义的cz适配器

因为commitizen只支持英文,如果我想要支持中文指令和emoji,那么就必须安装可自定义的cz适配器了

安装cz适配器
npm i -D commitlint-config-cz  cz-customizable
在根目录创建 .cz-config.js文件
echo > .cz-config.js

将以下配置内容复制到.cz-config.js文件中

module.exports = {
  types: [
    {
      value: ':sparkles: feat',
      name: '✨ feat:     新功能'
    },
    {
      value: ':bug: fix',
      name: '🐛 fix:      修复bug'
    },
    {
      value: ':package: build',
      name: '📦️ build:    打包'
    },
    {
      value: ':zap: perf',
      name: '⚡️ perf:     性能优化'
    },
    {
      value: ':tada: release',
      name: '🎉 release:  发布正式版'
    },
    {
      value: ':lipstick: style',
      name: '💄 style:    代码的样式美化'
    },
    {
      value: ':recycle: refactor',
      name: '♻️  refactor: 重构'
    },
    {
      value: ':pencil2: docs',
      name: '✏️  docs:     文档变更'
    },
    {
      value: ':white_check_mark: test',
      name: '✅ test:     测试'
    },
    {
      value: ':rewind: revert',
      name: '⏪️ revert:   回退'
    },
    {
      value: ':rocket: chore',
      name: '🚀 chore:    构建/工程依赖/工具'
    },
    {
      value: ':construction_worker: ci',
      name: '👷 ci:       CI related changes'
    }
  ],
  messages: {
    type: '请选择提交类型(必填)',
    customScope: '请输入文件修改范围(可选)',
    subject: '请简要描述提交(必填)',
    body: '请输入详细描述(可选)',
    breaking: '列出任何BREAKING CHANGES(可选)',
    footer: '请输入要关闭的issue(可选)',
    confirmCommit: '确定提交此说明吗?'
  },
  allowCustomScopes: true,
  // 跳过问题
  skipQuestions: ['body', 'footer'],
  subjectLimit: 72
}
将cz-customizable脚本添加到您的 package.json
npm set-script commit "git add . && cz-customizable"

安装git-commit-emoji

安装emoji插件
npm i -D  commitlint-config-git-commit-emoji 
更新 commitlint.config.js

移除extends中原来的 @commitlint/config-conventional,加入'git-commit-emoji', 'cz'

module.exports = {
  extends: ['git-commit-emoji', 'cz']
}
含emoji的自动化提示选项列表

使用 npm run commit 代替 git commit
在命令行中输入 npm run commit ,即可通过键盘上下键选择需要要的commit type了。
含emoji的自动化提示选项列表

其他

1. 根据 commit message 自动生成 changelog

安装conventional-changelog

npm install conventional-changelog conventional-changelog-cli --save-dev

将changelog脚本添加到您的 package.json

npm set-script changelog "conventional-changelog -p cz-config.js -i CHANGELOG.md -s -r 0"

添加成功:

{
  "scripts": {
     "changelog": "conventional-changelog -p cz-config.js -i CHANGELOG.md -s -r 0"
  }
}

-p 指定风格*
-i CHANGELOG.md 指定输出的文件名称
-s 输出到infile,这样就不需要指定与outfile相同的文件
-r 从最新的版本生成多少个版本。如果为0,则整个更改日志将被重新生成,输出文件将被覆盖。默认值:1
-n ./changelog-option.js 指定自定义配置

运行命令生成最新CHANGELOG

npm run changelog

2. 使用自动化工具后,还可以用 git commit - m ""提交代码吗?

可以。
配置自动化工具后,不仅支持npm run commit自动化提示选择提交,也可以继续使用 git commit - m ""提交,只是写type的时候前面还需要加上emoji的字符串。

示例:git commit -m ":sparkles: feat: 新增登录功能"

在这里插入图片描述
查看git日志记录,显示已经提交成功。

在这里插入图片描述

3. husky报错导致提交失败?

删除根目录下.husky文件夹,在命令行重新运行 npm run prepare npx husky add .husky/commit-msg 'npx --no-install commitlint --edit "$1"'

  • 9
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Git是分布式版本控制系统中最为流行的工具之一,它为软件团队提供了可靠的版本管理和文件协作机制。Git commitGit提供的关键命令之一,可以将更改保存到本地版本库中,从而创建一个新的版本。 在实际开发中,Git commit是一个非常重要的工具,它可以让开发者轻松管理团队的协作和代码更改。Git commit不仅可以记录代码修改的时间、原因和作者等关键信息,还可以让开发者对代码进行多个修改,并将这些修改打包成一个新的版本。 在使用Git commit时,开发者可以采用多种工具进行修改。比如,可以使用命令行来执行Git commit命令,也可以使用Git客户端或Git GUI等可视化工具来执行Git commit操作。 在命令行中,使用git commit”命令可以将所有在编写阶段所做的更改一次性提交到Git仓库。同时,开发者还可以使用git commit -a”命令将已经存在于Git仓库中的文件并导致修改的文件一起提交。 对于没有太多命令行操作经验的开发者,Git提供了一些可视化工具,如GitHub Desktop等。这些工具提供了一些直观的操作界面,让开发者能更方便地进行团队协作和文件管理,并且它们也提供了简单的Git commit操作。 总的来说,Git commit是开发者在Git中非常常见的操作之一,也是团队协作和代码管理不可或缺的一部分。开发者可以选择使用不同的工具来执行这个命令,包括命令行、Git客户端和可视化工具,以满足自己和团队的需求。无论使用哪种工具,都要牢记Git commit的核心理念,即在版本控制中始终保持可追溯性和可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值