约定式提交规范三部曲(一)之 commitlint

commitlint 是一个开源工具,用于规范化和验证 Git 提交消息的格式。它通常与约定式提交规范(Conventional Commits)一起使用,旨在帮助团队创建一致的提交消息格式,并确保提交消息包含必要的信息。

commitlint 仅仅是负责验证提交是否符合约定式提交规范的工具。不过,可以通过挂载 git 的钩子(借助 husky)来实现在提交消息时验证消息是否符合规范。

开始

bash 复制代码
npm install --save-dev @commitlint/config-conventional @commitlint/cli

# 配置使用的规范
echo "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.js

上面的 commitlint.config.js 是 commitlint 的配置文件,配置文件可以定义在 commitlint.config.js.commitlintrc.js.commitlintrc.commitlintrc.json.commitlintrc.ymlpackage.jsoncommitlint 中。

此时就可以使用 commitlint 验证提交信息,进入某个配置 git 的仓库/项目:

bash 复制代码
npx commitlint --to HEAD --verbose

husky

husky 是一个用于管理 git 钩子(git hooks)的工具,它可以帮助开发团队在代码提交和其他 git 操作前后运行自定义的脚本。通过 husky,您可以轻松地配置和管理各种 git 钩子,以执行预定义的任务,例如代码格式化、单元测试、代码审查等。

bash 复制代码
# 安装
npm install --save-dev husky

# 激活 husky
npx husky install

安装并激活 husky 后,就可以在 git 的 commit-msg 钩子上挂载 commitlint 的提交信息检查:

bash 复制代码
# 在 commit-msg 钩子上直接运行 commitlint 的方式
npx husky add .husky/commit-msg  'npx --no -- commitlint --edit ${1}'

# 或(二选一)

# 在 package.json 中配置脚本的方式
npm pkg set scripts.commitlint="commitlint --edit"
npx husky add .husky/commit-msg 'npm run commitlint ${1}'

现在简单测试一下,当提交时,运行被挂载的脚本或命令执行 commitlint 检查:

bash 复制代码
git commit -m "foo: this will fail" # 输出报错,阻止提交

自 commitlint v8.0.0 版本后,如果提交没有任何问题将不会有任何输出。

交互式提交

@commitlint/prompt-cli

@commitlint/prompt-cli 是一个用于在命令行界面(CLI)中提示用户输入标准格式的提交消息的工具。并确保它们遵守 commitlint.config.js 中配置的提交约定。它是 commitlint 生态系统中的一部分。

bash 复制代码
# 安装
npm install --save-dev @commitlint/prompt-cli

# 配置 prompt-cli 运行脚本
npm pkg set scripts.commit="commit"

# 运行提交
npm run commit

commitizen(推荐)

commitizen 提供了一种更现代的交互方式的命令行界面(CLI),更多详情参考:约定式提交规范三部曲(二)之 Commitizen

cz-conventional-template-zh-cn(commitizen的多仓库/项目方式,强烈推荐)

作者发布在 npmjs 通用的可应用于多仓库/项目(multi-repo)的简体中文模块 ,目前作者的所有项目全部都基于此模板进行规范化提交。

该方式与 commitizen 方式完全一样,只不过是使用 commitizen 的多仓库/项目方式。

更多

config-conventional

在上面的 commitlint.config.js 配置文件中,我们配置了 config-conventional 规范,是用于定义和配置提交消息的规范,比如定义了提交类型、提交范围和提交描述等,而 commitlint 则可以根据这些规范对提交消息进行验证,确保符合规范要求。如果提交消息不符合约定的规范,commitlint 可以发出警告或阻止提交,从而帮助团队保持提交消息的一致性和规范性。

CI 持续集成

CI(Continuous Integration)持续集成,是一种软件开发实践,它通过自动化的构建和测试流程,确保团队成员的代码变更能够快速、可靠地集成到共享的代码库中。commitlint 可应用于持续集成中,更多信息可参考 Guide: CI Setup

参考

相关推荐
神奇的程序员35 分钟前
我的软件冲进苹果商店下载榜前 50 了
前端
阳光是sunny1 小时前
别再被 worktree 绕晕了!AI 编程时代你必须掌握的 Git 隔离神器
前端·人工智能·后端
万少2 小时前
万少的博客 - 技术分享与解决方案
前端·javascript·后端
尘世中一位迷途小书童5 小时前
用 Cesium 撸了一个森林火情监控大屏,弧线、粒子、发光效果都齐了
前端·javascript
IT_陈寒5 小时前
垃圾回收器选错了,我的Java服务内存炸了
前端·人工智能·后端
月光下的丝瓜6 小时前
Flutter 国内安装指南
前端·flutter
玄星啊6 小时前
AI 编程的第 30 天,我怀念古法 Coding 了
前端·ai编程
Jolyne_6 小时前
Angular基础速通
前端·angular.js
锋行天下7 小时前
半秒开!还有谁!!!
前端·vue.js·架构
代码搬运媛8 小时前
git 下中文文件名乱码问题解决
前端