前端规范之-利用commitlint与husky规范git commit message

pre本文主要讲解如何在git commit -m"xxx" 时检查message是否符合规范。

1、Commitlint 是什么?

        原文: helps your team adhere to a commit convention. By supporting npm-installed configurations it makes sharing of commit conventions easy.
        说明:可以检查git commit -m"xxx" 命令中的message是否符合规范,不符合规范的无法提交,这个在团队开发中使每次提交的message能够直观的看出是更改了什么内容,方便阅读。

2、Husky 是什么?

        原文:Husky improves your commits and more  woof!

                You can use it to lint your commit messagesrun testslint code, etc... when you commit or push. Husky supports all Git hooks.

        说明:husky能够代理git生命周期(hook 钩子函数),在git触发生命周期时做一些操作。本次就会用到commit-msg(git commit 命令会触发commit-msg,在这个hook可以做message校验,校验不通过可以拒绝提交)

  3、开始0-1

        1.如果是空文件夹而非vue-cli或者其他脚手架创建的项目,先初始化执行npm init
例如我的是自建文件

前端规范之-利用commitlint与husky规范git commit message_第1张图片

// 执行
npm init

此时目录结构为 

前端规范之-利用commitlint与husky规范git commit message_第2张图片

        2. 初始化git,执行git init 

前端规范之-利用commitlint与husky规范git commit message_第3张图片

        3. 安装commitlint

npm install -D @commitlint/cli @commitlint/config-conventional

         4. 生成commitlint配置Configure生成commitlint.config.js文件

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

前端规范之-利用commitlint与husky规范git commit message_第4张图片

commitlint 推荐我们使用 config-conventional 配置去写 commit 

  • 提交格式(注意冒号后面有空格)
git commit -m [optional scope]: 
  • 常用的 type 类型

前端规范之-利用commitlint与husky规范git commit message_第5张图片

        5. 安装husky

npx husky-init && npm install

 安装完成会生成.husky文件夹
前端规范之-利用commitlint与husky规范git commit message_第6张图片

先注释掉 npm test或者删除pre-commit文件,因为目前我们不用这个hook(注意:注释用#号)

        6. 根据文档执行此命令-自动生成prepare(这个是npm脚本命令,会在执行npm install 命令时先运行)、commit-msg钩子(这是我们核心用到的钩子,会在git commit 命令时运行)

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

前端规范之-利用commitlint与husky规范git commit message_第7张图片

         7. 至此安装完成,验证执行
    

git add .
git commit -m"hello world"

前端规范之-利用commitlint与husky规范git commit message_第8张图片至此message校验已生效,发现我们的提交未成功,因为config-conventional提交规则为
git commit -m [optional scope]: ,修改命令

git commit -m"feat: hello world"

 提交成功

 引发的思考:
 1 我不想使用config-conventional提交规则,或者想更改规范如何更改?
 2 能否有命令行工具,可视化告知我们规范是什么,可以用哪些type、scope等?
后续我研究明白了会逐步去记录以上两个问题解决方案

你可能感兴趣的:(git)