commitlint 校验不生效是怎么回事?

闲人文雯 阅读 33

我按照教程配置了 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” 还是能直接过,完全没拦住,到底哪里出问题了?

我来解答 赞 5 收藏
二维码
手机扫码查看
2 条解答
皇甫誉琳
大概率是你没初始化 husky,光装了依赖没用,得运行初始化命令。

先检查一下你的 .husky 目录在不在项目根目录,如果在了的话,手动执行:

npx husky install


然后再检查一下 .git/hooks 目录里有没有 commit-msg 这个文件:

ls -la .git/hooks/


如果没有 commit-msg,说明钩子压根没挂上。

还有一种可能是 .husky/commit-msg 没有执行权限:

chmod +x .husky/commit-msg


另外,你的 commitlint.config.js 名字没问题,但如果你是用 pnpm 的话,有些情况会有问题,可以试试把配置文件改成 commitlint.config.cjs。

最后提醒一下,package.json 里的 prepare 脚本要加上:

"scripts": {
"prepare": "husky install"
}


这样别人 clone 下来跑完 npm install 后会自动装 husky 钩子。

你先去跑一下 npx husky install 试试,大概率就好了。
点赞 1
2026-03-11 08:04
Des.红静
这问题我也踩过坑,八成是husky的钩子没正确安装。先检查几个关键点:

第一,确认husky确实装了,而且版本要对。现在新版husky要用这种方式初始化:
npm install husky --save-dev
npx husky install


第二,看你的项目根目录有没有.husky文件夹。没有的话说明根本没装成功,有的话检查里面的钩子文件权限:
chmod +x .husky/commit-msg

注意安全:别乱改其他文件权限,只改这个钩子就行

第三,试试手动触发commitlint看是否正常工作:
echo "test" | npx commitlint

如果报错说明commitlint配置有问题,不报错就是husky的问题

常见翻车点:
1. 用yarn装husky但没跑yarn husky install
2. 项目.git/hooks里残留旧钩子
3. 在Windows下没配置git bash导致脚本执行失败

建议先删掉.husky目录重新装:
rm -rf .husky
npm install husky --save-dev
npx husky install
npx husky add .husky/commit-msg 'npx --no-install commitlint --edit $1'


最后吐槽一句,husky这玩意每次大版本升级都变安装方式,真是够了...
点赞
2026-03-08 21:00