本文从浅入深的介绍整个commitlint+husky规范commit日志的使用,先介绍如何时候,最后部分讲解原理。
为什么需要规范commit日志?
1、commit message 是程序员开发的日常操作, 但是实际工作中却常常被大家忽略
2、目前commit message 处于五花八门的书写风格,十分不利于阅读和维护
3、优秀的互联网科技公司都有一套代码提交规范,尤其是在一些大型开源项目中,commit message 都是十分一致
规范commit日志的好处
1、团队形成一致的代码提交风格,更好的提高工作效率
2、规范的 commit message 有助于团队其它人员 review, 还可以有效的输出 CHANGELOG, 对项目十分重要
3、成为一名有追求的工程师
安装步骤
1、环境准备:安装node环境,从Node.js官网(https://nodejs.org/en/)下载对应平台的安装程序,终端执行命令 node -v 和 npm -v 可以查看安装的node,npm的版本号,出现如下即成功。
2、commitlint、husky安装
步骤一:创建默认package.json文件、进入项目目录,右键git bash here,运行命令:npm init -y,,此时项目目录就出现了package.json文件。
步骤二:初始化package.json文件内容,运行命令:npm init,按照提示输入内容即可,生成如下内容。
{
"name": "commitlint-husky",
"version": "1.0.0",
"description": "commitlint",
"main": "index.js",
"directories": {
"doc": "doc"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "http://10.10.8.201/caxs/caxs-artemis.git"
},
"keywords": [],
"author": "geekspring",
"license": "ISC",
步骤三:安装commitlint插件
命令:
npm install --save-dev @commitlint/cli @commitlint/onfigconventional @commitlint/config-angular
步骤四:安装husky
命令:npm install --save-dev husky
在package.json中添加husky
"husky": {
"hooks": {
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
}
}
步骤五:安装changelog插件,方便查看changlog日志文件
命令:npm install --save-dev conventional-changelog-cli
在package.json文件中添加changlog命令,方便查看
"scripts": {
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s"
}
到此就安装完毕啦。
规则使用
方式一:使用angular团队的规则,在项目目录下创建commitlint.config.js文件,加入如下配置即可:
module.exports = {extends: ['@commitlint/config-angular']};
方式二:自定义规则文件内容,创建commitlint.config.js文件,加入如下配置:
rule配置说明:
rule由name和配置数组组成
1、数组中第一位为level,可选0,1,2,0为disable,1为warning,2为error
2、第二位为应用与否,可选always|never
3、第三位该rule的值
使用效果图
错误示例:
正确示例:
查看changlog日志,根据配置的命令 npm changelog
原理介绍
commitlin介绍
目前国内外规范使用较多的是 Angular 团队的规范, 目前规范参考Angular 团队比较多。直接看如下参考资料很详细。
参考资料:
https://blog.csdn.net/y550918116j/article/details/81214746
https://www.npmjs.com/package/@commitlint/config-angular
https://blog.csdn.net/peterxiaoq/article/details/76144288
husky介绍:
husky 是一个为 git 客户端增加 hook 的工具。
在.git/ 目录下增加husky钩子,在 pre-commit 阶段自动执行保证每一个 commit 的commit message的正确性
追根溯源:
git对提交的内容会校验,校验主要分为:
1、 服务端pre-receive钩子
2、客户端的pre-commit钩子
客户端的pre-commit钩子验证提高服务端的钩子验证效率,可以理解为:
服务端的pre-receive钩子:后端验证
客户端的pre-commit钩子:前端验证
前端验证的效率高于,将所有的验证都放在后端,故此,在pre-commit处增加了husky钩子
钩子判断坏的commit 会被拒绝在本地,本地只能将钩子可以通过的代码提交到中心仓库。