为什么需要制定提交规范
为什么需要制定提交规范,简单总结如下:
- 让之后的项目维护者了解代码出现特定变化和添加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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。