commitlint 校验不生效是怎么回事?
我按照教程配置了 commitlint 和 husky,但提交的时候根本没触发校验,直接就 commit 成功了。本地也装了 @commitlint/cli 和 @commitlint/config-conventional,配置文件也写了,难道是 husky 的钩子没挂上?
我的 commitlint.config.js 是这样的:
module.exports = {
extends: ['@commitlint/config-conventional']
};
而且 .husky/commit-msg 文件内容是:
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx --no-install commitlint --edit $1
但 git commit -m “test” 还是能直接过,完全没拦住,到底哪里出问题了?
先检查一下你的 .husky 目录在不在项目根目录,如果在了的话,手动执行:
然后再检查一下 .git/hooks 目录里有没有 commit-msg 这个文件:
如果没有 commit-msg,说明钩子压根没挂上。
还有一种可能是 .husky/commit-msg 没有执行权限:
另外,你的 commitlint.config.js 名字没问题,但如果你是用 pnpm 的话,有些情况会有问题,可以试试把配置文件改成 commitlint.config.cjs。
最后提醒一下,package.json 里的 prepare 脚本要加上:
这样别人 clone 下来跑完 npm install 后会自动装 husky 钩子。
你先去跑一下 npx husky install 试试,大概率就好了。
第一,确认husky确实装了,而且版本要对。现在新版husky要用这种方式初始化:
第二,看你的项目根目录有没有.husky文件夹。没有的话说明根本没装成功,有的话检查里面的钩子文件权限:
注意安全:别乱改其他文件权限,只改这个钩子就行
第三,试试手动触发commitlint看是否正常工作:
如果报错说明commitlint配置有问题,不报错就是husky的问题
常见翻车点:
1. 用yarn装husky但没跑yarn husky install
2. 项目.git/hooks里残留旧钩子
3. 在Windows下没配置git bash导致脚本执行失败
建议先删掉.husky目录重新装:
最后吐槽一句,husky这玩意每次大版本升级都变安装方式,真是够了...