vscode commitlint(debug npm scripts)

本文详细记录了解决commitlint在校验git提交日志时遇到的“GIT_PARAMSisnotavailableglobally”错误的过程,以及如何调试commitlint以解决匹配正则不完全导致的校验失败。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在使用commitlint校验提交git提交日志的时候遇到点奇怪的问题,在这里记录下解决方案。

windows下使用默认命令“commitlint -e $GIT_PARAMS”校验会报“GIT_PARAMS is not available globally”

这个问题的原因是windows的环境变量中没有“GIT_PARAMS”,我换成windows下的环境变量形式“%GIT_PARAMS%”还是会报同样的错误,应该是windows下的git或许根本就没把当前提交的日志信息放入%GIT_PARAMS%。继续google,发现了在.git目录下有个COMMIT_EDITMSG文件,打开一看这个文件存储了最近一次提交的日志信息,于是把“commitlint -e $GIT_PARAMS”改为“commitlint -e .git/COMMIT_EDITMSG”,问题解决,这种写法在windows和mac上都支持。

commitlint校验失败(type cannot be empty,message cannot be empty)

上面这个问题奇怪的地方就在于我明明写了type和message的,google一番毫无结果之后我决定自己调试下“commitlint -e $GIT_PARAMS”到底是怎么校验提交信息的。于是按照vscode官方文档添加“Launch via NPM”如下:(关于vscode如何调试的基础信息请自行参考vscode debugging)

// launch.json
{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "Launch via NPM",
            "runtimeExecutable": "npm",
            "runtimeArgs": [
                "run-script",
                "debug"
            ],
            "port": 9229
        }
    ]
}
复制代码

然后在项目的package.json添加debug脚本

"scripts": {
    "debug": "commitlint -e .git/COMMIT_EDITMSG"
},
复制代码

然后在commitlint源码上打上断点,f5启动调试,纳尼,没启动就直接退出了,什么情况。继续google,发现用node调试单文件需要添加--inspect参数,或者是--inspect-brk=port(port用来指定端口号)。这样就简单了,在node_modules的.bin目录下找到commitlint.cmd文件,进而找到commitlint的入口js文件,找到之后将npm scripts修改如下

"scripts": {
    "debug":"node --nolazy --inspect-brk=9229 ./node_modules/@commitlint/cli/lib/cli.js -e .git/COMMIT_EDITMSG",
}
复制代码

然后在cli.js中打上断点,f5启动调试就行了。

经过调试发现检验失败是因为commitlint的匹配正则没考虑到一些特殊字符,导致无法匹配,commitlint的匹配正则如下,可以看到中间部分并没有包含所有字符,而我的提交信息里面恰恰用了一个“@”字符,可以说非常尴尬了。

^(\w*)(?:\(([\w$.\-* ]*)\))?: (.*)$
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值