pre本文主要讲解如何在git commit -m"xxx" 时检查message是否符合规范。
原文: helps your team adhere to a commit convention. By supporting npm-installed configurations it makes sharing of commit conventions easy.
说明:可以检查git commit -m"xxx" 命令中的message是否符合规范,不符合规范的无法提交,这个在团队开发中使每次提交的message能够直观的看出是更改了什么内容,方便阅读。
原文:Husky improves your commits and more woof!
You can use it to lint your commit messages, run tests, lint code, etc... when you commit or push. Husky supports all Git hooks.
说明:husky能够代理git生命周期(hook 钩子函数),在git触发生命周期时做一些操作。本次就会用到commit-msg(git commit 命令会触发commit-msg,在这个hook可以做message校验,校验不通过可以拒绝提交)
// 执行
npm init
此时目录结构为
npm install -D @commitlint/cli @commitlint/config-conventional
echo "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.js
commitlint 推荐我们使用 config-conventional 配置去写 commit
git commit -m [optional scope]:
npx husky-init && npm install
先注释掉 npm test或者删除pre-commit文件,因为目前我们不用这个hook(注意:注释用#号)
npx husky add .husky/commit-msg 'npx --no -- commitlint --edit "$1"'
git add .
git commit -m"hello world"
至此message校验已生效,发现我们的提交未成功,因为config-conventional提交规则为
git commit -m
git commit -m"feat: hello world"
提交成功
引发的思考:
1 我不想使用config-conventional提交规则,或者想更改规范如何更改?
2 能否有命令行工具,可视化告知我们规范是什么,可以用哪些type、scope等?
后续我研究明白了会逐步去记录以上两个问题解决方案