本文爲介紹約定式提交,主要從如下幾點展開:php
本文對應的github項目地址:https://github.com/larscheng/Conventional-Commits-Demo前端
目前咱們的項目在commit時基本上五花八門,各領風騷。雖然不如網上的那些惡搞commit記錄,可是這一現象嚴重影響咱們在閱讀記錄和查找bug緣由時的效率。java
咱們能夠感覺下:node
能夠對比看看一樣按照規範式提交的項目的commit記錄git
兩種commit message的對比很明顯說明了狀況,統一的提交信息,不只看起來舒服,並且讀起來更舒服github
其實已經愈來愈多的人開始意識到規範化提交的重要性,據我在公司實地採訪了一圈,前端團隊早已經開始約定式提交
,這也多是由於目前社區中主流的提交規範都是由Angular提交準則造成。web
爲了提升開發效率,減小在處理問題時耗費的時間,推薦你們在寫完代碼,提交時可以使用如下規範:npm
統一
、簡明
)約定式提交:每次使用git commit
的時候都須要寫commit message,若是message的 style是按照固定的模版格式書寫
,對於後期的維護和編寫changelog都有巨大的好處。json
並且如今的不少自動生成changelog的工具,都是創建在約定式提交的基礎之上。api
約定式提交規範是基於Angular提交準則造成,提交說明的結構以下:
<類型>([可選的做用域]): <描述> // 空一行 [可選的正文] // 空一行 [可選的腳註]
其中,<類型>
是爲了向類庫使用者代表其意圖,其可選值爲:
[可選的做用域]
: 是爲了描述 這次 commit 影響的範圍,好比: route, component, utils, build, api, website, docs
<描述>
: 這次提交的簡短描述
[可選的正文]
: 這次提交的詳細描述,描述爲何修改,作了什麼樣的修改,以及開發的思路等等,輸入 \n
換行
[可選的頁腳]
: 主要寫下面2種
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。如圖:
若是你的全部 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查看