commitlint

Commit Lint 其实是需要搭配Husky才能实现对Git Commit Message的校验的。

Git Hooks

git hooks, 顾名思义hooks为“钩子”之意,Git预先定义了一些“事件钩子”如“commit-msg”、“pre-commit”等,当我们执行对应的Git操作时会触发它们,从而通知订阅该事件的shell script文件处理我们要进行的任务,这些shell脚本文件存放在项目根目录下的.git/hooks 目录中,如图所示:

而Husky 它会帮我们自动生成.git/hooks目录下的shell scrip, 从而实现git commit 的时候的验证。

Struct

# Header
<type>[optional scope]: <description>

# Body
[optional body]

# Footer
[optional footer(s)]

PS:
* 如果没有特别说明,所有的「:」冒号后面都要加「空格」
* 不管是哪一个部分,任何一行都不得超过72个字符(或100个字符)。这是为了避免自动换行影响美观。(未验证)
Header
  1. type的定义

    ## build 编译相关的修改,例如发布版本、对项目构建或者依赖的改动
    ## ci 持续集成修改
    ## chore 其他修改, 比如改变构建流程、或者增加依赖库、工具等
    ## docs 仅文档新增/改动
    ## feat 新特性、新功能
    ## fix 修补某功能的bug
    ## perf 优化相关,比如提升性能、体验
    ## refactor 重构某个功能
    ## revert 回滚到上一个版本
    ## style 代码格式修改, 注意不是 css 修改
    ## test 测试用例修改
    ## update 更新某功能
    ## optimize: 优化构建工具或运行时性能
    
  2. Scope的定义

    用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。
    
  3. description

    commit 目的的简短描述,
    
  4. Sample

    git commit -m 'fix(account): 修复xxx的bug'
    
Body
具体的描述本次修改的内容正文,可以是多行.
Footer

本次修改的脚注,针对重大修改使用「BREAKING CHANGE: 」来标记。一般只用于二种情况。

  1. 不兼容变动
如果当前代码与上一个版本不兼容,则 Footer 部分以BREAKING CHANGE开头,后面是对变动的描述、以及变动理由和迁移方法。

BREAKING CHANGE: isolate scope bindings definition has changed.

    To migrate the code follow the example below:

    Before:

    scope: {
      myAttr: 'attribute',
    }

    After:

    scope: {
      myAttr: '@',
    }
    
    The removed `inject` wasn't generaly useful for directives so there should be no code using it.
  1. 关闭 Issue
Closes #123, #245, #992
Sample
feat(scope): 修改了 API 协议

增加了很多不可描述的事情
删除了一些不必要的参数

BREAKING CHANGE: 修改了 API 协议

集成于项目中

1. 安装 husky依赖

# 在项目的根路径下(即.git的所在目录)
npm install --save-dev husky

2.安装@commitlint

# 在 node_modules的同级下安装
npm install --save-dev @commitlint/config-conventional @commitlint/cli @commitlint/prompt-cli

其中@commitlint/prompt-cli依赖是可以不装的,这个时以交互模式进行提交code

3. 项目中安装husky

# 在项目的根目录(即.git的所在目录)
npx husky install

4. 生成commitlint配置文件

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

5. 在packag.json中添加

# 第一层级
husky": {
    "hooks": {
      "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
    }
  }

6. Add Hook

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

前端项目可以配置npm命令

"commit": "git add . && commit"

以上配置结束就能用了

遇到的问题

因为本人的项目中源码的位置跟.git的位置不一样,所以的更改配置文件中路径,如下:

commit-msg
#!/bin/sh  该文件在husky目录下
. "$(dirname "$0")/_/husky.sh"
./Code/node_modules/.bin/commitlint --edit 
commitlint.config.js
#!/  该文件在根目录下
module.exports = {extends: ["./Code/node_modules/@commitlint/config-conventional"]};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值