Git?Commitizen提交規(guī)范化自動(dòng)生成changelog文件
背景介紹
我們?cè)谑褂靡粋€(gè)比較厲害的框架或者庫(kù)的時(shí)候,經(jīng)??梢钥吹?CHANGELOG.md,維護(hù)版本更新內(nèi)容。
很多時(shí)候,特別是在你開(kāi)源自己的一個(gè)工具或庫(kù)時(shí),這種版本更新內(nèi)容是非常有必要的,如果用戶(hù)使用了你的輪子,連更新內(nèi)容都不知道,試問(wèn)你敢用嗎? 那么這些都是怎么寫(xiě)的呢?每次發(fā)版都要手動(dòng)記錄嗎?顯然不是,這些都是靠提條記錄生成的。
比如我們?cè)?github 上隨便找一個(gè)庫(kù):https://github.com/vuepress/vuepress-next,可以看到它就有這個(gè)文件

點(diǎn)進(jìn)去可以查看具體內(nèi)容:注意我畫(huà)紅線(xiàn)的這 2 個(gè),我們是可以跳到對(duì)應(yīng) issue 和對(duì)應(yīng)代碼提交記錄的。

Commitizen 介紹
1、團(tuán)隊(duì)約束
生成這種 CHANGELOG 有一個(gè)前提,就是團(tuán)隊(duì)成員都按規(guī)矩提交。人不是機(jī)器,習(xí)慣不養(yǎng)成往往會(huì)忽略,這種約束還是讓工具來(lái)做吧。
2、Commitizen 是一個(gè)撰寫(xiě)符合 Commit Message 格式標(biāo)準(zhǔn)的一款工具,至于標(biāo)準(zhǔn) Commit Message 格式標(biāo)準(zhǔn),可以百度一下或者一會(huì)提交示例介紹。
3、局部安裝 commitizen:npm install commitizen -D
4、執(zhí)行腳本設(shè)置 package.json
在項(xiàng)目根目錄下運(yùn)行下面命令,使其支持angular的 Commit message 格式
// 如果你使用npm執(zhí)行下面命令: commitizen init cz-conventional-changelog --save-dev --save-exact // 如果使用yarn,則執(zhí)行下面: commitizen init cz-conventional-changelog --yarn --dev --exact
注意,–save-exact 相當(dāng)于鎖定版本號(hào)
此時(shí) package.json 新增了這部分內(nèi)容

{
"scripts": {
"commit": "cz"
},
"devDependencies": {
"commitizen": "^4.2.4",
"conventional-changelog-cli": "^2.2.2"
},
"config": {
"commitizen": {
"path": "./node_modules/cz-conventional-changelog"
}
}
}
5、修改代碼提交過(guò)程介紹
這時(shí)候就可以提交嘗試下,提交的時(shí)候直接執(zhí)行剛才添加的腳本:yarn commit 或者 npm run commit,然后就會(huì)看到讓你選擇的各種頁(yè)面,選擇即可

第一步: 選擇這次提交的內(nèi)容類(lèi)型:提交類(lèi)型是以后生成 CHANGELOG 分類(lèi)題目
第二步: 這次提交影響范圍
第三步:簡(jiǎn)短描述:如果你使用 gitlab 或者 github 進(jìn)行遠(yuǎn)程分支 Merge requset 的時(shí)候,這個(gè)就是默認(rèn)的title
第四步:詳細(xì)描述
第五步:是否重大更新(改變):一般具有重要的大版本或者破壞原來(lái)代碼的時(shí)候需要標(biāo)記一下
第六步:這次提交對(duì)哪些打開(kāi)的 issue 有影響:類(lèi)似于 github 開(kāi)源模式,代碼的維護(hù)不論需求還是 fix都有對(duì)應(yīng)的issue討論進(jìn)行code的支撐。git message 這一步就是為了關(guān)聯(lián)issue。如果選擇是,可寫(xiě)上相關(guān)issue 對(duì)應(yīng)號(hào)碼。(也就是上面的那 2 個(gè)可以跳轉(zhuǎn)的地方)
自動(dòng)產(chǎn)生CHANGELOG
那么正規(guī)的寫(xiě)提交記錄最后就是為了讓團(tuán)隊(duì)其他人看懂,還有一個(gè)目的是為了更規(guī)范的產(chǎn)生CHANGELOG,下面看看自動(dòng)產(chǎn)生CHANGELOG的步驟。
1、安裝產(chǎn)生 changelog 插件 conventional-changelog-cli:
npm install -D conventional-changelog-cli
2、在 package.json 添加腳本
"changelog": "conventional-changelog -p angular -u -i CHANGELOG.md -s -r 0"
3、執(zhí)行腳本,查看結(jié)果:yarn changeLog 或 npm run changeLog
最后即可生成一個(gè)提交日志文件

我這里測(cè)試了下:
feat 是 npm run commit 按步驟提交的
fix 是直接 git commit -m "fix: test 符號(hào)" 提交的
可以看到都生成了日志文件,所以如果團(tuán)隊(duì)每個(gè)人都能按 Commit 規(guī)范提交的話(huà),第一步 Commitizen 約束是可以不需要的(但是會(huì)存在一個(gè)問(wèn)題就是不能實(shí)現(xiàn) issue 與 commitId 的代碼提交記錄的聯(lián)動(dòng)了)。
以上就是Git Commitizen提交規(guī)范化自動(dòng)生成changelog文件的詳細(xì)內(nèi)容,更多關(guān)于Git Commitizen提交規(guī)范的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
wap開(kāi)發(fā)中如何有效的利用緩存減少消息的傳送量
由于WAP信道帶寬的限制,我們?cè)诰帉?xiě)WAP應(yīng)用的時(shí)候都希望最大限度地減少消息的傳送量。2010-06-06
回車(chē)和換行有什么區(qū)別?我們平時(shí)按下的Enter鍵是回車(chē)還是換行
如果用過(guò)機(jī)械打字機(jī),就知道回車(chē)和換行的區(qū)別了。換行就是把滾筒卷一格,不改變水平位置。回車(chē)就是把水平位置復(fù)位,不卷動(dòng)滾筒2011-03-03
wireshark網(wǎng)絡(luò)抓包工具的使用教程
WireShark是非常流行的網(wǎng)絡(luò)抓包分析工具,可以截取各種網(wǎng)絡(luò)數(shù)據(jù)包,并顯示數(shù)據(jù)包詳細(xì)信息,下面就跟隨小編一起學(xué)習(xí)一下wireshark的具體使用吧2023-08-08
i++循環(huán)與i-–循環(huán)的執(zhí)行效率(遞增與遞減效率)
i++循環(huán)與i-–循環(huán)的執(zhí)行效率(遞增與遞減效率),需要的朋友可以參考下。2011-01-01
使用idea 去除 html 代碼前的行號(hào)和空行的方法詳解
這篇文章主要介紹了使用idea 去除 html 代碼前的行號(hào)和空行,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
如何在Linux?系統(tǒng)中使用apt?包管理器安裝?Git?LFS
Git LFS是一個(gè)開(kāi)源擴(kuò)展,用于解決Git在處理大型文件時(shí)的效率和性能問(wèn)題,這篇文章主要介紹了在?Linux系統(tǒng)中使用apt包管理器來(lái)安裝Git LFS的問(wèn)題,需要的朋友可以參考下2023-05-05

