1. 程式人生 > 程式設計 >git提交驗證規範並自動生成日誌檔案的方法

git提交驗證規範並自動生成日誌檔案的方法

每次git提交資訊的時候會先驗證提交的格式是否符合規範,符合規範並執行eslint
兩者都符合之後才可正常提交,並可以根據提交的資訊自動生成日誌資訊。
一般是遵循 Angular Commit Message

校驗commit 格式

主要使用 @commitlint/cli @commitlint/config-conventional 來校驗commit是否符合規範 一般可以全域性安裝or本地安裝

install

全域性

npm install -g @commitlint/cli @commitlint/config-conventional

本地

npm install --save-dev @commitlint/cli @commitlint/config-conventional

如果是全域性可以使用下面這條命令檢視全域性有沒有安裝成功

npm ls -g -depth=0

生成配置檔案

在專案根目錄下執行下面這個命令生成對應的配置檔案

touch commitlint.config.js

檔案內容一般可以設定如下:

module.exports = {
 extends: ['@commitlint/config-conventional'],rules: {
 'type-enum': [2,'always',[
  "feat","fix","docs","style","refactor","test","chore","revert"
 ]],'subject-full-stop': [0,'never'],'subject-case': [0,'never']
 }
};

husky

一般校驗規則設定好之後會結合husky提供的鉤子,在每次commit之前會先去校驗,如果不符合校驗規則,則提交失敗
husky 繼承了git下所有的鉤子,需要注意在使用husky之前,先git init 一下,否則沒有 .git檔案,就沒法繼承git的鉤子了
如果專案中刪除了.git 檔案,那需要在git init之後重新安裝一下husky否則就不work了

install

npm install husky --save-dev

config

在package.json中新增配置

"husky": {
 "hooks": {
  "commit-msg": "commitlint -e $GIT_PARAMS"
 }
 }

至此,每次提交如果不符合規範就會提交失敗,類似下面這種提示

在這裡插入圖片描述

在這裡插入圖片描述

commitizen

一個輔助工具,可以讓我們寫出一個符合規範的commit資訊。
通過互動式的命令,我們可以寫出符合規範的commit.可以全域性安裝

install

npm install -g commitizen

安裝之後在需要使用git commit的地方使用git cz 代替,就會出現互動式命令列視窗,直接選擇對應的選項讓後填寫即可
如下:

在這裡插入圖片描述
在這裡插入圖片描述

lint-staged

這個工具好像和提交沒有太大關係,但一般也都會用到,所以這裡順帶提一下,這個是每次提交的時候讓eslint只驗證自己這次所改動的程式碼,對於其他程式碼則不會去lint。
不至於每次提交都會對所有的檔案呢lint.

install

npm i --save-dev lint-staged 

config

在package.json中配置下:

 "husky": {
 "hooks": {
  "pre-commit": "lint-staged","commit-msg": "commitlint -e $HUSKY_GIT_PARAMS"
 }
 }

當然這裡假定你的專案中有關eslint的其他配置都已近配置好了。也可以加上prettierrc去格式化程式碼,這裡就不加了
上面的配置會在每次提交之前對所改動的程式碼進行lint

自動生成日誌檔案

主要使用到 conventional-changelog 工具來幫助我們自動生成日誌檔案

install

一般這種工具可以全域性安裝一下比較方便

npm install -g conventional-changelog

只安裝上面的執行相關命令會報錯,安裝下對應的cli

npm install -g conventional-changelog-cli

同樣可以使用下面這條命令檢視是否安裝成功

npm ls -g -depth=0

在這裡插入圖片描述

自動生成日誌

沒問題之後在專案的根目錄下執行下列命令

conventional-changelog -p angular -i Changelog.md -s

當然也可以在package.json中配置成一個命令,這樣就很方便

"scripts": {
 "changelog": "conventional-changelog -p angular -i Changelog.md -s"
 },

這樣每次執行下面這條命令即可在專案根目錄自動生成對應的日誌檔案

npm run changelog

當然上述的changelog.md是生成的檔名,你也可以該成自己期望的檔名

在這裡插入圖片描述

總結

總結一下用這套工具容易出錯的幾個地方吧。

1.一個是使用husky之前需要git init一下,如果刪除了專案中的.git資料夾,雖然此時已近安裝過了husky,在重新git init之後依然需要重新安裝一下husky否則繼承不了git的鉤子,就不work

2.針對上面的第一條,有的時候按照套路來,可就是會發現會報一個這個錯誤
這個時候可以檢視本地專案中 .git有木有hooks檔案,如果沒有那說明husky沒有繼承git,如果有的話就rm -rf .git/hooks然後重新安裝下husky。這是一個closed issue

在這裡插入圖片描述

3,生成日誌的時候也需要安裝 conventional-changelog-cli 否則會報一個命令找不到的錯誤.

到此這篇關於git提交驗證規範並自動生成日誌檔案的文章就介紹到這了,更多相關git提交驗證規範內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!