已配置规则仍遇CommitLint报错:请在commitlint.config.js中添加规则
解决CommitLint报错需添加规则的问题
结合你描述的情况(Husky位于Git仓库子目录、多种配置尝试无效),问题大概率是钩子执行时的工作目录不对,导致CommitLint无法正确读取配置文件或依赖。以下是针对性的解决步骤:
1. 修改Husky钩子脚本,切换到仓库根目录执行CommitLint
因为你的Husky钩子在子目录,默认执行npx commitlint时的工作目录是钩子所在的子目录,而你的commitlint.config.js和node_modules应该在仓库根目录。修改钩子脚本如下:
#!/bin/sh . "$(dirname "$0")/_/husky.sh" # 切换到Git仓库根目录 cd "$(git rev-parse --show-toplevel)" npx commitlint --edit "$1"
git rev-parse --show-toplevel会自动获取当前Git仓库的根目录路径,确保CommitLint能找到根目录下的配置文件和依赖包。
2. 确保CommitLint配置文件的导出格式正确
如果你的项目package.json中没有设置"type": "module",请使用CommonJS格式导出配置,避免ES模块语法的兼容性问题:
// commitlint.config.js module.exports = { extends: ["@commitlint/config-conventional"], };
3. 验证CommitLint配置是否正常工作
在仓库根目录执行以下命令,直接测试配置有效性:
# 测试符合规范的提交信息 echo "feat: add user authentication" | npx commitlint
如果命令输出无报错,说明配置本身没问题,问题完全出在Husky钩子的工作目录上。
4. 确认Husky的hooks路径配置正确
如果你是在子目录初始化的Husky,需要在仓库根目录的package.json中明确指定Husky的钩子路径:
{ "husky": { "hooksPath": "./your-subdirectory/.husky" } }
同时确保你是通过以下命令安装的Husky(指定子目录):
npx husky install ./your-subdirectory/.husky
内容的提问来源于stack exchange,提问作者len4o17
相关产品推荐
相关产品推荐

