git commit 规范

采用 Angular 的 commit 规范。

不写 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"
  }
}
  1. 添加验证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 里面。

只有 typefeatfixcommit 会出现在 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 versionCHANGELOG.md 文件就会出现在你的项目根目录下面,这样每次version变化发新的代码版本时,就可以直接通过该方式生成对应的changelog页,而不需要手动编辑,当然,生成changelog的message信息需要注意简介清晰,表达清楚。

参考

  • Angular 规范
  • 阮一峰的 Commit message 和 Change log 编写指南

你可能感兴趣的:(git commit 规范)