commitlint 配置了 type-enum 为啥还是能提交不符合规范的 commit?
我按照文档配了 commitlint 的 type-enum,只允许 feat、fix、docs 这几种类型,但 git commit 时写了个 typo: xxx 还是成功提交了,根本没报错。是不是哪里没生效?
我用的是 husky + commitlint 的组合,配置文件如下:
module.exports = {
extends: ['@commitlint/config-conventional'],
rules: {
'type-enum': [2, 'always', ['feat', 'fix', 'docs']]
}
};
先检查你的 .husky 目录下有没有 commit-msg 文件,没有的话需要手动创建。husky v6 之后的版本配置方式变了,不再往 package.json 里写配置了。
在项目根目录执行这两步:
或者手动在 .husky 目录下新建 commit-msg 文件,内容如下:
别忘了给这个文件加上执行权限:
这样配置完,再试下 git commit,不合规的提交就会被拦截报错了。
另外吐槽一句,你的 rules 配置可以稍微优雅一点,把类型抽出来维护,后面加类型不用改两遍:
这样后面如果想加 scope-enum 或者其他规则复用这个类型列表也方便。