约定式提交规范三部曲(一)之 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

参考

相关推荐
golitter.3 分钟前
Ajax和axios简单用法
前端·ajax·okhttp
雷特IT22 分钟前
Uncaught TypeError: 0 is not a function的解决方法
前端·javascript
长路 ㅤ   1 小时前
vite学习教程02、vite+vue2配置环境变量
前端·vite·环境变量·跨环境配置
亚里士多没有德7751 小时前
强制删除了windows自带的edge浏览器,重装不了怎么办【已解决】
前端·edge
micro2010141 小时前
Microsoft Edge 离线安装包制作或获取方法和下载地址分享
前端·edge
.生产的驴1 小时前
Electron Vue框架环境搭建 Vue3环境搭建
java·前端·vue.js·spring boot·后端·electron·ecmascript
awonw1 小时前
[前端][easyui]easyui select 默认值
前端·javascript·easyui
九圣残炎1 小时前
【Vue】vue-admin-template项目搭建
前端·vue.js·arcgis
柏箱2 小时前
使用JavaScript写一个网页端的四则运算器
前端·javascript·css
TU^2 小时前
C语言习题~day16
c语言·前端·算法