You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Husky commit-message钩子未触发,commitlint无法校验提交信息

问题分析与解决方案

可能原因及对应修复方式

1. Commitlint配置文件格式不兼容

你当前使用ES模块格式的export default,但Husky钩子运行的Node环境默认采用CommonJS模块规范,这会导致commitlint无法读取配置文件,直接跳过校验流程。

修复:
将commitlint.config.js改为CommonJS格式:

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

2. Husky钩子脚本写法不规范

手动编写的commit-msg脚本存在参数传递或环境上下文问题,比如未引入Husky的环境脚本,或是pnpx执行路径异常,导致commitlint未被正确调用。

修复:
替换commit-msg脚本内容为官方推荐写法:

#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

npx --no-install commitlint --edit "$1"
  • --edit "$1"是commitlint专门处理Git提交信息临时文件的参数,比直接传入文件路径更可靠
  • 引入husky.sh确保钩子在正确的项目环境中运行
  • --no-install避免pnpx重复下载依赖,提升执行效率

3. 钩子文件缺少执行权限

手动创建的.husky/commit-msg文件可能未设置执行权限,导致Git无法触发该钩子。

修复:
在终端执行命令赋予执行权限:

chmod +x .husky/commit-msg

4. Husky初始化不完整

若手动创建钩子文件而非通过Husky命令添加,可能缺失必要的环境配置。

修复:
通过Husky命令重新添加commit-msg钩子:

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

验证方法

可以在commit-msg脚本中添加日志输出,确认钩子是否正常触发:

#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

echo "Commitlint triggered, checking file: $1" >> ./commitlint-hook.log
npx --no-install commitlint --edit "$1"

提交后查看项目根目录下的commitlint-hook.log,若有内容说明钩子已触发,再根据日志排查commitlint的执行问题。

内容的提问来源于stack exchange,提问作者Ethan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 14:05:05