因为要使用 commitizen 工具来辅助提交信息填写
npm install commitizen -g
进而需要先安装 node 环境
在项目目录下
# 需要先 npm init
commitizen init cz-conventional-changelog --save --save-exact
使用 git cz
进行提交
会弹出规范进行一系列的输入
现在好像存在更轻巧的库 git-cz
Commit message 包括三个部分:Header,Body 和 Footer
<type>(<scope>): <subject>
<空行>
<body>
<空行>
<footer>
注:Body 和 Footer 为可选内容
type | 含义 |
---|---|
feat | 新增功能 |
fix | 修复bug |
docs | 修改文档 |
refactor | 代码重构,未新增任何功能和修复任何bug |
build | 改变构建流程,新增依赖库、工具等(例如webpack修改) |
style | 仅仅修改了空格、缩进等,不改变代码逻辑 |
perf | 改善性能和体现的修改 |
chore | 非src和test的修改 |
test | 测试用例的修改 |
ci | 自动化流程配置修改 |
revert | 回滚到上一个版本 |
用于说明 commit 影响的范围,比如数据层、控制层、视图层、包名、文件名等等。
是 commit 目的的简短描述,不超过50个字符,结尾不加句号。
Body 部分是对本次 commit 的详细描述,应该说明代码变动的动机,以及与以前行为的对比。
yorkie用于执行git-hooks
npm install --D yorkie
// package.json
"gitHooks": {
"commit-msg": "node git-hooks/verify-commit-msg.js"
}
verify-commit-msg.js
const chalk = require('chalk')
const msgPath = process.env.GIT_PARAMS
const msg = require('fs').readFileSync(msgPath, 'utf-8').trim()
const commitRE = /^(revert: )?(feat|fix|polish|docs|style|refactor|perf|test|workflow|ci|chore|types|build)(\(.+\))?: .{1,50}/
if (!commitRE.test(msg)) {
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(` You can also use ${chalk.cyan(`npm run commit`)} to interactively generate a commit message.\n`)
)
process.exit(1)
}
自定义gitHooks
版本号 major.minor.patch
版本更新规则:
cz-conventional-changelog 可以自动根据提交信息生成change log
$ npm install -g conventional-changelog-cli
执行
# 在之前生成的基础上,叠加
$ conventional-changelog -p angular -i CHANGELOG.md -s
# 生成所有记录,包括之前的
$ conventional-changelog -p angular -i CHANGELOG.md -s -r 0
这个方法需要我们手动打 tag,才会输出版本和变化对应关系
默认 angular 只输出 feat 和 fix
自定义配置
npm i conventional-changelog-custom-config -D
命令也要修改
conventional-changelog -p angular -i CHANGELOG.md -s -r 0
配置输出项
并没有达到理想效果,没有显示额外内容,格式也没了
custom-config
参考
npm install -D standard-version
可在 package.json 中添加 scripts
"scripts": {
"release": "standard-version"
}
对导出 CHANGELOG.md 信息的配置
创建 .versionrc 文件,内容如下:
{
"types": [
{"type": "chore", "section":"Others", "hidden": false},
{"type": "revert", "section":"Reverts", "hidden": false},
{"type": "feat", "section": "Features", "hidden": false},
{"type": "fix", "section": "Bug Fixes", "hidden": false},
{"type": "docs", "section":"Docs", "hidden": false},
{"type": "style", "section":"Styling", "hidden": false},
{"type": "refactor", "section":"Code Refactoring", "hidden": false},
{"type": "perf", "section":"Performance Improvements", "hidden": false},
{"type": "test", "section":"Tests", "hidden": false},
{"type": "build", "section":"Build System", "hidden": false},
{"type": "ci", "section":"CI", "hidden":false}
]
}