为什么须要制订提交标准
为什么须要制订提交标准,简略总结如下:
- 让之后的我的项目维护者理解代码呈现特定变动和增加 feature 的起因
- 不便 code review
- 清晰的历史记录,不便疾速浏览查找,回溯之前的工作内容
- 标准的提交记录可用于主动生成版本公布日志(CHANGELOG.MD)
- 基于提交类型,触发构建和部署流程
怎么制订提交标准
Conventional Commits
是目前应用最宽泛的提交信息标准,其次要受 AngularJS 标准 的启发
commit 格局如下:
<type>[scope]: <subject>
// 空一行
[optional body]
// 空一行
[optional footer(s)]
标准阐明
# 次要 type
feat: 减少新性能
fix: 修复 bug
# 非凡 type
docs: 只改变了文档相干的内容
style: 代码格式化相干的改变,例如去掉空格、扭转缩进、增删分号,不扭转代码逻辑
refactor: 代码重构时应用,没有增加新性能或者修复 bug
perf: 进步性能的改变
chore: 结构工具的改变,扭转构建流程、减少依赖库、工具等,例如 webpack,npm
# 暂不应用 type
test: 增加测试用例或者批改现有测试用例
revert: 回退,撤销上一次的 commit
ci: 与 CI(继续集成服务)无关的改变
如何束缚标准
怎么确保每个提交都能符合规范呢,最好的形式就是通过工具来生成和校验;
commitizen
是一个 nodejs 命令行工具,通过交互的形式,生成符合规范的 git commit;conventional-changelog
是一款能够依据我的项目的 commit 和 metadata 信息主动生成 changelogs 和 release notes 的系列工具;standard-version
能够主动帮你实现生成 version、打 tag, 生成 CHANGELOG 等系列过程;
commitizen
是一个撰写合格 Commit message 的工具。
格局校验 commitlint
应用 commitlint
和husky
来进行提交查看,当执行 git commit
时会在对应的 git 钩子上做校验,只有合乎格局的 Commit message 能力提交胜利。
生成 Change log 的工具
conventional-changelog
主动版本治理和生成 CHANGELOG
standard-version一个用于生成 CHANGELOG.md
和进行 SemVer(语义化版本号)
发版的命令行工具,次要性能:
- 主动批改最新版本号,能够是
package.json
或者自定义一个文件 - 读取最新版本号,创立一个最新的
git tag
- 依据提交信息,生成
CHANGELOG.md
- 创立一个新提交包含
CHANGELOG.md
和package.json
参考
标准 GIT 代码提交信息 & 自动化版本治理
Commit message 和 Change log 编写指南