commit message 是开发的日常操作, 好的 log 不仅有助于他人 review, 还可以有效的输出 CHANGELOG, 对项目的管理实际至关重要, 但是在平时工作时,只依赖大致的开发规范和自觉,很难形成一种普遍约束。而通过本文,对项目进行一些基础配置,让开发者在提交时可以自动对提交作出规范
1,项目效果
代码提交
2,自动生成commit 日志
2,配置
依赖包
npm i vue-cli-plugin-commitlint commitizen commitlint conventional-changelog-cli husky -D
配置package.json
{"scripts": {"log": "conventional-changelog --config ./node_modules/vue-cli-plugin-commitlint/lib/log -i CHANGELOG.md -s -r 0","cz": "npm run log && git add . && git cz"},"husky": {"hooks": {"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"}},"config": {"commitizen": {"path": "./node_modules/vue-cli-plugin-commitlint/lib/cz"}}
}
配置文件commitlint.config.js
module.exports = {extends: ['./node_modules/vue-cli-plugin-commitlint/lib/lint']
};
使用:
npm run cz # git add . && git commit -m 'feat:(xxx): xxx'
npm run log # 生成 CHANGELOG
官方文档:
vue-cli-plugin-commitlintwww.npmjs.com3,各个包的作用解释
根据上面的配置,已经可以给项目配置提交的规范了。如果只是想应用,那么后面的各个包的功能解释部分可以选看。
- husky
- commitizen
- commitlint
- conventional-changelog-cli
husky: git命令时,自定义指定一些动作
// package.json
{"husky": {"hooks": {"pre-commit": "npm test","pre-push": "npm test","...": "..."}}
}
// commit之前会走 test
// push之前会走 test
commitlint
可以帮助我们 lint commit messages, 如果我们提交的不符合指向的规范, 直接拒绝提交, 比较狠.
commitizen
我们需要借助它提供的 git cz 命令替代我们的 git commit 命令, 帮助我们生成符合规范的 commit message
conventional-changelog-cli
根据git的metadata生成changelog
所以,回看一下刚才的package.json
{"scripts": {"log": "conventional-changelog --config ./node_modules/vue-cli-plugin-commitlint/lib/log -i CHANGELOG.md -s -r 0","cz": "npm run log && git add . && git cz"},"husky": {"hooks": {"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"}},"config": {"commitizen": {"path": "./node_modules/vue-cli-plugin-commitlint/lib/cz"}}
}
当输入yarn cz时,
0, 首先生成log
1,走命令git cz。生成commit message
2,husky检查commit-msg: commitlint -E HUSKY_GIT_PARAMS
3, 校验完成后,自动提交