前言
本文為介紹約定式提交,主要從以下幾點展開:
本文對應的github項目地址:https://github.com/larscheng/Conventional-Commits-Demo
現狀分析
目前我們的項目在commit時基本上五花八門,各領風騷。雖然不如網上的那些惡搞commit記錄,但是這一現象嚴重影響我們在閱讀記錄和查找bug原因時的效率。
我們可以感受下:
可以對比看看同樣按照規范式提交的項目的commit記錄
兩種commit message的對比很明顯說明了情況,統一的提交信息,不僅看起來舒服,而且讀起來更舒服
其實已經越來越多的人開始意識到規范化提交的重要性,據我在公司實地采訪了一圈,前端團隊早已經開始約定式提交
,這也可能是因為目前社區中主流的提交規范都是由Angular提交准則形成。
為了提高開發效率,減少在處理問題時耗費的時間,推薦大家在寫完代碼,提交時能夠使用以下規范:
- 規范化提交(不一定是文中提到的方式,但無論哪種方式,要做到
統一
、簡明
) - 一處變更一次commit(謹防多處、多次修改堆積成一次commit提交,這對后期bug分析將是災難)
約定式提交
約定式提交:每次使用git commit
的時候都需要寫commit message,如果message的 style是按照固定的模版格式書寫
,對於后期的維護和編寫changelog都有巨大的好處。
而且現在的很多自動生成changelog的工具,都是建立在約定式提交的基礎之上。
優點
- 可讀性好,清晰,不必深入看代碼即可了解當前commit的作用。
- 為 Code Reviewing做准備
- 方便跟蹤工程歷史
- 讓其他的開發者在運行 git blame 的時候想跪謝
- 提高項目的整體質量,提高個人工程素質
約定式提交規范
約定式提交規范是基於Angular提交准則形成,提交說明的結構如下:
<類型>([可選的作用域]): <描述>
// 空一行
[可選的正文]
// 空一行
[可選的腳注]
其中,<類型>
是為了向類庫使用者表明其意圖,其可選值為:
- feat: 表示新增了一個功能
- fix: 表示修復了一個 bug
- docs: 表示只修改了文檔
- style: 表示修改格式、書寫錯誤、空格等不影響代碼邏輯的操作
- refactor: 表示修改的代碼不是新增功能也不是修改 bug,比如代碼重構
- perf: 表示修改了提升性能的代碼
- test: 表示修改了測試代碼
- build: 表示修改了編譯配置文件
- chore: 無 src 或 test 的操作
- revert: 回滾操作
[可選的作用域]
: 是為了描述 此次 commit 影響的范圍,比如: route, component, utils, build, api, website, docs
<描述>
: 此次提交的簡短描述
[可選的正文]
: 此次提交的詳細描述,描述為什么修改,做了什么樣的修改,以及開發的思路等等,輸入 \n
換行
[可選的頁腳]
: 主要寫下面2種
- Breaking changes: 在可選的正文或腳注的起始位置帶有 BREAKING CHANGE: 的提交,表示引入了破壞性變更(這和語義化版本中的 MAJOR 相對應)。
- Closed issues: 羅列此次提交修復的 bug,如 fixes issue #110
Commitizen
Commitizen是一個撰寫合格 Commit message 的工具。
安裝
安裝命令如下:任選其一
$ npm install -g commitizen (全局安裝) $ npm install -d commitizen (項目安裝)
然后,在項目目錄里,運行下面的命令,使其支持 Angular 的 Commit message 格式。
$ commitizen init cz-conventional-changelog --save --save-exact
ps: 對於非Node項目
(java、php...)在執行上一條命令前,需要手動創建package.json文件
$ npm init --yes
通過如上命令生成package.json文件基本格式如下:
{
"name": "demo",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www"
}
}
以后,凡是用到git commit
命令,一律改為使用git cz
。這時,就會出現選項,用來生成符合格式的 Commit message。如圖:
standard-version
如果你的所有 Commit 都符合 Angular 格式,那么發布新版本時, Change log 就可以用腳本自動生成
standard-version就是生成 Change log 的工具
安裝使用
安裝命令如下:任選其一
$ npm i -g standard-version (全局安裝) $ npm i -S standard-version (項目安裝)
生成CHANGELOG:
在package.json中的script
中 加入配置:
"scirpt":{"release":"standard-version"}
直接執行,即可生成CHANGELOG文件
$ npm run release
備注:
生成CHANGELOG的工具很多,conventional-changelog-cli也可以用來生成CHANGELOG,安裝使用方法和
standard-version
類似
本項目的CHANGELOG生成實例:CHANGELOG查看
- 文章作者: LarsCheng
- 文章鏈接: 本文首發於個人博客:https://www.larscheng.com/
- 發布方式:OpenWrite 最懂你的科技自媒體管理平台
- 版權聲明: 本博客所有文章除特別聲明外,均采用 CC BY-NC-SA 4.0 許可協議。轉載請注明來自 LarsCheng's Blog!