commitlint + Husky 规范 git commit 日志

为什么要坚持写作?写作就是求甚解的过程。

在这里插入图片描述

前面和大家分享过Git Hooks 与 Husky —— 配合 eslint 规范代码,今天和大家分享【如何用 commitlint 结合 Husky 来规范团队的 git commit


规范 commit 日志的好处

  1. 团队形成一致的代码提交风格,更好的提高工作效率
  2. 规范的 commit message 有助于团队其它人员 review, 还可以有效的输出 CHANGELOG, 对项目十分重要
  3. 成为一名有追求的工程师

安装 & 配置 commitlint

https://commitlint.js.org/


安装 commitlint cliconfig-conventional

npm install --save-dev @commitlint/{config-conventional,cli}

# For Windows:
npm install --save-dev @commitlint/config-conventional @commitlint/cli

创建 commitlint.config.js 配置 commitlint

echo "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.js

安装 & 配置 husky

安装 husky

npm install husky --save-dev

启用 Git hooks

npx husky install

prepare 脚本

执行下面的命令,会在 packgae.json 中添加 prepare 脚本

npm set-script prepare "husky install"

执行上面的命令我们会得到如下配置, prepare 脚本会在执行 npm install 后会自动执 husky install 命令,该命令会创建 .husky/ 目录并指定该目录为 git hooks 所在的目录。

{
  "scripts": {
    "prepare": "husky install"
  }
}

添加 commit-msg hook

运行以下命令创建 commit-msg hook

npx husky add .husky/commit-msg 'npx --no -- commitlint --edit "$1"'

# 有时上面的命令在某些命令解释器中不起作用
# 你可以尝试下面的命令在commit-msg文件中写入 npx --no -- commitlint --edit $1
npx husky add .husky/commit-msg \"npx --no -- commitlint --edit '$1'\"
# or
npx husky add .husky/commit-msg "npx --no -- commitlint --edit $1"

提交 commit,发现 commitlint 已经生效,不符合 commitlint 规范的 git commit 的将被停止

Tip

如果你遇到如下报错,删除node_modules并执行 npm install 重新安装即可

.husky/_/husky.sh: No such file or directory

commitlint 规范

提交格式

git commit -m <type>(scope?): <subject>
Examples
git commit -m 'chore: run tests on travis ci'

git commit -m 'fix(server): send cors headers'

git commit -m 'feat(blog): add comment section'

注意,英文冒号 + 空格


常用的type类别

type:用于表明我们这次提交的改动类型,是新增了功能?还是修改了测试代码?又或者是更新了文档?总结以下 11 种类型:

  • build:主要目的是修改项目构建系统(例如 glup,webpack,rollup 的配置等)的提交
  • ci:主要目的是修改项目继续集成流程(例如 Travis,Jenkins,GitLab CI,Circle等)的提交
  • docs:文档更新
  • feat:新增功能
  • fix:bug 修复
  • perf:性能优化
  • refactor:重构代码(既没有新增功能,也没有修复 bug)
  • revert:回滚某个更早之前的提交
  • style:不影响程序逻辑的代码修改(修改空白字符,补全缺失的分号等)
  • test:新增测试用例或是更新现有测试
  • chore:不属于以上类型的其他类型(日常事务)

更多的 type 说明 你可以参阅这里 commitlint type-enum

scope:作用域,可选。用于标识此次提交主要涉及到代码中哪些模块。支持多作用域(可使用分隔符:"/"、"\" 和 “,”

subject:一句话描述此次提交的主要内容,做到言简意赅。


自定义 commitlint 规范

https://commitlint.js.org/#/reference-rules

在这里插入图片描述

我们可以通过修改 commitlint.config.js 来自定义我们的提交规范,如:

rule配置说明:rulename和配置数组组成,如:'name: [0, 'always', 72]',数组中第一位为level,可选0,1,2,0为disable,1为warning,2为error;第二位为是否启用,可选always|never,第三位该rule的值。具体配置例子如下:

// commitlint.config.js
module.exports = {
  extends: ['@commitlint/config-conventional'],
  rules: {
    'type-enum': [2, 'always', [
      'test', 'upd', 'feat', 'fix', 'refactor', 'docs', 'chore', 'style', 'revert',
    ]],
    'type-case': [0],
    'type-empty': [0],
    'scope-empty': [0],
    'scope-case': [0],
    'subject-full-stop': [0, 'never'],
    'subject-case': [0, 'never'],
    'header-max-length': [0, 'always', 72],
  },
};

使用commitlint好处

我们都知道,在使用 git commit 时,git 会提示我们填入此次提交的信息。
可不要小看了这些 commit,团队中规范了 commit 可以更清晰的查看每一次代码提交记录,还可以根据自定义的规则,自动生成 changeLog 文件。


参阅

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: git:husky>pre-commit是一个Git钩子,它在提交代码前执行一些操作。通常用于代码风格检查、单元测试等操作,以确保代码质量和稳定性。Husky是一个Git钩子管理工具,可以方便地配置和管理Git钩子。 ### 回答2: Git是目前最流行的版本控制系统。在大多数项目中,代码的质量和一致性非常重要。在Git中,可以使用钩子(Hooks)来确保代码的质量和一致性。其中,pre-commit是常用的钩子之一。而Git: Husky则是Git中常用的钩子管理工具。 Git: Husky是一个钩子管理工具,它允许开发者进行钩子配置,包括在提交代码之前运行何种指令。 具体地说,Git: Husky支持pre-commit钩子,使开发者可以在代码提交之前运行一些脚本,以确保提交的代码的质量和一致性。 pre-commit钩子可以被用于在代码提交之前运行某些指令。例如:静态代码分析工具,或者在代码提交之前运行的测试。因此,pre-commit钩子可以帮助开发者检查代码错误、格式、风格等。其过程是:在代码提交之前,pre-commit钩子运行拖的脚本,检查指定的问题并生成反馈,然后提交成功或失败。 总之,Git: Husky中的pre-commit钩子是非常实用的工具。它可以让开发者在代码提交之前运行各种指令,以检查代码错误、格式、风格等。这有助于确保代码的质量和一致性,提高软件开发的效率和质量。所以,建议开发者在Git中应用Git: Husky这一钩子管理工具,并使用pre-commit钩子确保代码的质量。 ### 回答3: Git是一款非常流行的版本控制工具,而husky>pre-commitGit中的一个功能。Husky是一款JavaScript库,可以通过它来为Githooks添加JavaScript脚本,而pre-commitGit hook的一种类型,可以在commit前触发,并且可以运行一些脚本来帮助我们检查代码或其它工作。 在Git中,pre-commit可以帮助我们做很多事情。例如,在代码提交之前,我们可以用pre-commit来对代码进行语法检查、格式化、代码审查、代码测试等。如果代码不符合某些规范,pre-commit还可以阻止代码提交,从而让我们更加规范地管理代码。 使用husky>pre-commit也非常简单。首先,我们需要在项目中安装husky,然后在package.json文件中设置pre-commit属性来配置pre-commit hook。在pre-commit属性中,我们可以定义一个或多个需要执行的脚本,这些脚本会在commit之前执行。例如,我们可以在pre-commit中加入代码格式化、代码审查和代码测试三个脚本,来确保我们提交的代码符合团队的代码规范和质量要求。 总之,使用husky>pre-commit可以很好地帮助我们管理代码,确保代码的质量和一致性。这对于团队协作和代码维护都非常重要。同时,husky>pre-commit也可以提高我们的编码效率,让我们集中精力在代码逻辑的编写上,而不是在代码格式、代码规范等上浪费时间。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

__畫戟__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值