用git cz 取代git commit

git commit 就是你在做一次修改后类似于写一个备注,但是这样commit的文本若不进行管理,可读性不太好,一般我们会用commitizen代替。

目的

统一团队Git commit 文本标准,便于后续代码review和团队协作;

配置

  • 安装到项目
npm i commitizen cz-conventional-changelog --save-dev

然后在package.json内手动配置如下内容:

"config": {
  "commitizen": {
    "path": "./node_modules/cz-conventional-changelog"
  }
}

类型选择

type代表某次提交的类型,比如是修复一个bug还是增加一个新的feature。
所有的type类型如下:

  • feat: 新增feature
  • fix: 修复bug
  • docs: 仅仅修改了文档,比如README, CHANGELOG, CONTRIBUTE等等
  • style: 仅仅修改了空格、格式缩进、都好等等,不改变代码逻辑
  • refactor: 代码重构,没有加新功能或者修复bug
  • perf: 优化相关,比如提升性能、体验
  • test: 测试用例,包括单元测试、集成测试等
  • chore: 改变构建流程、或者增加依赖库、工具等
  • revert: 回滚到上一个版本

配置youkie

youkie 是pre-commit 钩子,用于代码质量检查,在 vue-cli 3.x 版本中,已经使用尤大改写的yorkie,yorkie实际是fork husky,然后做了一些定制化的改动,使得钩子能从package.json的 "gitHooks"属性中读取:

  • 安装
npm i yorkie --save-dev
  • 写脚本验证msg格式
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)
}
  • 配置到package.json的gitHooks:
  "gitHooks": {
    "pre-commit": "npm run lint",
    "commit-msg": "node scripts/verify-commit-msg.js"
  }

使用

提交时是用git cz 替代 git commit,否则提交不了代码。

你可能感兴趣的:(用git cz 取代git commit)