Angular标准 commit message 提交信息、commit 验证、standard-version 自动版本更替和 changelog 输出

辅助提交工具

因为要使用 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

type含义
feat新增功能
fix修复bug
docs修改文档
refactor代码重构,未新增任何功能和修复任何bug
build改变构建流程,新增依赖库、工具等(例如webpack修改)
style仅仅修改了空格、缩进等,不改变代码逻辑
perf改善性能和体现的修改
chore非src和test的修改
test测试用例的修改
ci自动化流程配置修改
revert回滚到上一个版本

scope

用于说明 commit 影响的范围,比如数据层、控制层、视图层、包名、文件名等等。

subject

是 commit 目的的简短描述,不超过50个字符,结尾不加句号。

Body

Body 部分是对本次 commit 的详细描述,应该说明代码变动的动机,以及与以前行为的对比。

Footer

  1. 是否有重大的改变(是否有突破性的变化)
    框架式改变,或者跟上一版本不兼容,则 Footer 部分以BREAKING CHANGE开头,后面是对变动的描述、以及变动理由和迁移方法。
  2. 这一变化是否影响到任何尚未解决的问题(关闭issue)
    可以填写fix #1 等于关闭问题1 或者 使用Closes #1,关闭多个issue使用fix #1,#2,#3 逗号分割,关闭了三个issue。

强制验证提交信息

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

standard-version 自动化版本控制

版本号 major.minor.patch
版本更新规则:

  • feature 会更新 minor,
  • bug fix 会更新 patch,
  • BREAKING CHANGES 会更新 major

conventional-changelog-cli 生成 change log

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

使用 standard-version 自动version 自动tag

参考

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}
  ]
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值