不写 commit message
不允许提交代码,具体的规范格式,可以查看github。
commit 工具流
commitizen
项目内安装 commitizen,安装cz-conventional-changelog
npm i commitizen cz-conventional-changelog --save-dev
然后在package.json内手动配置如下内容:
"config": {
"commitizen": {
"path": "./node_modules/cz-conventional-changelog"
}
}
或者通过全局安装 commitizen
npm i -g commitizen
然后,在项目目录里,运行下面的命令,使其支持 Angular 的 Commit message 格式。
commitizen init cz-conventional-changelog --save --save-exact
也会生成上面的那段config配置!!!
添加script脚本commit命令
"commit": "git-cz",
以后就可以通过npm run commit
命令进行提交commit信息了。
yorkie
yorkie
package用来检查 commit message
是否符合规范,这个其实是vue作者尤大大在forkHusky
包的基础上做了改变,由原来的通过script的形式,改为了通过gitHooks配置的形式。
1、安装 yorkie
package:
npm i yorkie --save-dev
2、配置gitHooks:
// package.json
{
"gitHooks": {
"pre-commit": "npm run lint",
"commit-msg": "node scripts/verify-commit-msg.js"
}
}
- 添加验证msg格式的verify-commit-msg.js(参考vue)
const chalk = require('chalk')
const msgPath = process.env.GIT_PARAMS
const msg = require('fs').readFileSync(msgPath, 'utf-8').trim()
const commitRE = /^(revert: )?(feat|fix|docs|style|refactor|perf|test|workflow|ci|chore|types)(\(.+\))?: .{1,50}/
if (!commitRE.test(msg)) {
console.log()
console.error(
` ${chalk.bgRed.white(' ERROR ')} ${chalk.red(`invalid commit message format.`)}\n\n` +
chalk.red(` Proper commit message format is required for automated changelog generation. Examples:\n\n`) +
` ${chalk.green(`feat(compiler): add 'comments' option`)}\n` +
` ${chalk.green(`fix(v-model): handle events on blur (close #28)`)}\n\n` +
chalk.red(` See .github/COMMIT_CONVENTION.md for more details.\n`) +
chalk.red(` You can also use ${chalk.cyan(`npm run commit`)} to interactively generate a commit message.\n`)
)
process.exit(1)
}
通过这种方式的好处是自由定制信息。
当然,也可以通过已有的包commitlint
进行开发(注意,老的推荐库validate-commit-msg已经弃用),这个包的使用很简单,github仓库上有清晰的描述.
生成 change log
如果你的提交信息都符合上述的规范,那么这些信息就会出现在 change log
里面。
只有 type
为 feat
和 fix
的 commit
会出现在 change log
中,其他的不会出现,当然你也可以自己自定义。
如何生成 change log
安装依赖 npm i conventional-changelog -S
在 package.json 中配置下面的命令:
{
"script": {
"version": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0"
}
}
然后运行命令:npm run version
。CHANGELOG.md
文件就会出现在你的项目根目录下面,这样每次version变化发新的代码版本时,就可以直接通过该方式生成对应的changelog页,而不需要手动编辑,当然,生成changelog的message信息需要注意简介清晰,表达清楚。