安裝Husky + commitlint 規範 commit 訊息

更新於 發佈於 閱讀時間約 6 分鐘

在開發用例時,撰寫清楚且統一的提交資訊非常重要,因為它能讓團隊成員快速理解每次提交的更改內容。

為了了解這個問題,可以使用Husky、Commitlint 來建立一套提交訊息規範,確保所有發布者都遵循相同的格式。

套件

  • husky :是一個 Git Hooks 工具,可以在git commitgit push隨時執行外部的驗證腳本。
  • commitlint : 可用來驗證提交訊息格式

安裝流程

步驟1:安裝 Husky

作用:是一個 Git Hooks 工具,可以在git commitgit push有時執行額外的實驗腳本。

npm install --save-dev husky

這次將 Husky 安裝到devDependencies,並保證它只在開發環境中使用。


步驟2:初始化 Husky

作用:這些步驟將在專題中建立 目錄,讓 Husky可以.husky/管理 Git Hooks。

npm husky init

這會做兩件事:

  • package.json中新增prepare腳本
"scripts": { 
"prepare": "husky install"
}
  • 執行husky install指令,在個人資料中建立 .husky/目錄:
.husky/ 
├── _
└── pre-commit

如果preparescript沒有執行(或Husky沒有正常運作),可以手動執行:

npm run prepare


步驟 3:安裝 commitlint cli & conventional config

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


步驟 4:設定 commitlint 設定欄

echo  "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.cjs


步驟 5:新增 Git Hook

作用:Husky 允許我們自行註冊 Git Hooks,例如pre-commitcommit-msg

(1)新增pre-commitHook

這次會議是每次執業git commit前擔任執業npm test

npx husky add .husky / pre-commit “npm test”

本次 .husky/pre-commit產物檔案,內容如下:

npm test

如果npm test不存在,建議先package.json加入:

"scripts": { 
"test": "echo \"No tests available\" && exit 0"
}

(2)新增commit-msgHook

(驗證 Commit 訊息格式)

如果你已經安裝commitlint,可以使用 Husky 來保證 commit 訊息符合 Conventional Commits 規範:

npm husky 加 .husky/commit-msg 

此處建立 .husky/commit-msg,內容如下:

# 1. 將全形冒號(:)轉換為半形冒號(:
sed -i '' -E 's/:/:/g' "$1" # 將全形冒號轉換為半形冒號

# 2. 確保冒號後面有且只有一個空格
sed -i '' -E 's/^([a-zA-Z]+):[[:space:]]*/\1: /' "$1" # 冒號後面有空格且只有一個

# 3. 移除開頭空白
sed -i '' -E 's/^[[:space:]]+//g' "$1" # 移除開頭的空格

# 4. 如果 message 是空的,設置一個預設值
sed -i '' -E 's/^[[:space:]]*$/feat: Update commit message/g' "$1" # 補充預設訊息

# 5. 執行 commitlint 驗證
npx --no -- commitlint --edit "$1"

這樣,每次git commitcommitlint都會自動檢查 commit 訊息是否合法。


步驟 6:測試 Husky 是否運行

執行以下指令,測試Husky是否成功安裝並運行:

git commit  -m "test: 測試 Husky"

如果:

  • 成功提交,代表 Husky 正常運作
  • 出錯(例如 commit 訊息不符合規範),則會顯示錯誤錯誤訊息,阻止提交— commit
    訊息的:需要形式
    — :後面有一個空格,這是正確格式
    — <type>必填是小寫(例如feat、、、) — 不能為空fixchoredocs
    <subject>

提交訊息的格式不符合常規提交

根據常規提交規則,提交訊息應是:

<Type> : <subject>

Type類型

commitlint 定義 Type 有以下這些,如果不符合以下則會報錯!

  • build:部署系統或外部依賴的變更(例如:gulp、broccoli、npm)
  • ci:修改 CI(持續整合)設定列或腳本(例如:GitHub Actions、SauceLabs)
  • docs:只關注事情的改變
  • 特性:新增功能
  • fix:修改錯誤
  • perf:優化的程式碼更改
  • 重構:既不是修改錯誤,也不是新增功能的重構
  • 測試:新增或修改測試內容
avatar-img
0會員
1內容數
留言
avatar-img
留言分享你的想法!
你可能也想看
Google News 追蹤
Thumbnail
該來的終究還是來了 度過焦躁不安的一整周,學徒老人家我的不安感等比級數的襲來,自3/19寫了第一篇關於<巴克萊銀行:倉促撤退>的報告,看到市場上的機構法人有如大洪水、地震來臨前夕開始竄逃撤退。 海湖莊園協議 接著,在3/31與4/2兩天接著寫了川普與他的財經團隊在海湖莊園豪
Thumbnail
空單爆天量、技術指標超賣、情緒恐慌到極致:美股嘎空行情有機會啟動嗎? 重點摘要: 技術面極度超賣,反彈條件醞釀中,但尚未明確止穩 SPY 與 QQQ 的重要指標,如MACD、KDJ、RSI等指標進入極端超賣區,但尚未出現底部鈍化或明確反轉訊號,技術面仍屬空方主導。 連續出現跳空缺口,空方動
Thumbnail
全新 vocus 挑戰活動「方格人氣王」來啦~四大挑戰任你選,留言 / 愛心 / 瀏覽數大 PK,還有新手專屬挑戰!無論你是 vocus 上活躍創作者或剛加入的新手,都有機會被更多人看見,獲得站上版位曝光&豐富獎勵!🏆
Windows : 下載Git (git-scm.com)並按照指示安裝。 安裝完成後,你可以通過運行以下命令來確認安裝是否成功: git --version 初次設定GIT 接下來就是按照初次設定git,會需要配置你的用戶名和電子郵件地址,這些信息將被記錄在您提交的每個變更中。 git
1. Outline Takeaway Setting up Git and verifying installation Configuring your Git username and email Initializing a new Git repository Stagin
Thumbnail
因為最近想嘗試編碼風格,於是就選了一套比較"不嚴格"的輔助工具來摸索。 編輯器 VS CODE 框架 VUE3 打包工具 VITE 編碼風格 Standard 環境 version { "nodejs":"v18.18.0", "npm":"9.8.1" }
Thumbnail
本篇文章介紹如何使用Git Bash進行版本控制操作,包括創建repository、查看狀態、歷程以及加入暫存和提交暫存等操作。透過基本的Git指令,您可以更深入地瞭解Git工具的使用方法。
※ 需要做版本備份時: git init:初始化此資料夾,由git 開始追蹤版本控制。 git add:將檔案加入到暫存區。 git commit:把暫存區的內容提交到儲存庫。 git status:查看目前所有檔案的狀態。 git log:查看過去所有commit的記錄。 ※ 需要做修
※ 簡短說明Git 和 Git Flow 是什麼?如何應用? Git 是什麼? Git是一個分散式版本控制軟體,能夠紀錄檔案的狀態變化,以及協調多個開發者之間的工作。它允許團隊成員協作編輯和管理項目的代碼庫,並且能夠追蹤文件的歷史變更、恢復到以前的版本、合併不同版本的代碼,以及解決代碼衝突等。
※ Git(四) 空的資料夾無法被加入 Git 進行版本控制,但這個資料夾如果又是很重要的資料夾,你會怎麼處理? 當空的目錄無法被加入 Git 進行版本控制時,有以下的做法可以解決: 在那個空目錄裡隨便放一個檔案就行了。 在這個資料夾中添加一個名為 .gitkeep 的空檔案,讓 Git 能
Thumbnail
最近在找資料的時候,偶然發現了兩個有趣的 git 指令:git commit --fixup 和 git rebase -i <sha> --autosquash。 研究了下發現對於像我這種每次 commit 都要斤斤計較,盡可能完美的人來說非常好用,因此寫一篇筆記記錄一下用法。
※ 關於Git (二) 請寫下從 Github 上複製一個專案下來,做一次遞交,然後推上去會用到的所有 git 指令。 複製專案(Clone) markdown-here: git clone https://github.com/adam-p/markdown-here.git 如果在訊息
關於Git(一) 版本管理系統是什麼?為什麼要用? 版本管理系統(Version Control System,VCS)是一種追蹤和管理項目代碼、文件和資源變更的工具。 工作流程上可防止每個人因使用自己的開發程式搭配不同且不相容的工具所引起的混亂。版本控制會同步處理版本,並確定變更不會與其他人
Thumbnail
該來的終究還是來了 度過焦躁不安的一整周,學徒老人家我的不安感等比級數的襲來,自3/19寫了第一篇關於<巴克萊銀行:倉促撤退>的報告,看到市場上的機構法人有如大洪水、地震來臨前夕開始竄逃撤退。 海湖莊園協議 接著,在3/31與4/2兩天接著寫了川普與他的財經團隊在海湖莊園豪
Thumbnail
空單爆天量、技術指標超賣、情緒恐慌到極致:美股嘎空行情有機會啟動嗎? 重點摘要: 技術面極度超賣,反彈條件醞釀中,但尚未明確止穩 SPY 與 QQQ 的重要指標,如MACD、KDJ、RSI等指標進入極端超賣區,但尚未出現底部鈍化或明確反轉訊號,技術面仍屬空方主導。 連續出現跳空缺口,空方動
Thumbnail
全新 vocus 挑戰活動「方格人氣王」來啦~四大挑戰任你選,留言 / 愛心 / 瀏覽數大 PK,還有新手專屬挑戰!無論你是 vocus 上活躍創作者或剛加入的新手,都有機會被更多人看見,獲得站上版位曝光&豐富獎勵!🏆
Windows : 下載Git (git-scm.com)並按照指示安裝。 安裝完成後,你可以通過運行以下命令來確認安裝是否成功: git --version 初次設定GIT 接下來就是按照初次設定git,會需要配置你的用戶名和電子郵件地址,這些信息將被記錄在您提交的每個變更中。 git
1. Outline Takeaway Setting up Git and verifying installation Configuring your Git username and email Initializing a new Git repository Stagin
Thumbnail
因為最近想嘗試編碼風格,於是就選了一套比較"不嚴格"的輔助工具來摸索。 編輯器 VS CODE 框架 VUE3 打包工具 VITE 編碼風格 Standard 環境 version { "nodejs":"v18.18.0", "npm":"9.8.1" }
Thumbnail
本篇文章介紹如何使用Git Bash進行版本控制操作,包括創建repository、查看狀態、歷程以及加入暫存和提交暫存等操作。透過基本的Git指令,您可以更深入地瞭解Git工具的使用方法。
※ 需要做版本備份時: git init:初始化此資料夾,由git 開始追蹤版本控制。 git add:將檔案加入到暫存區。 git commit:把暫存區的內容提交到儲存庫。 git status:查看目前所有檔案的狀態。 git log:查看過去所有commit的記錄。 ※ 需要做修
※ 簡短說明Git 和 Git Flow 是什麼?如何應用? Git 是什麼? Git是一個分散式版本控制軟體,能夠紀錄檔案的狀態變化,以及協調多個開發者之間的工作。它允許團隊成員協作編輯和管理項目的代碼庫,並且能夠追蹤文件的歷史變更、恢復到以前的版本、合併不同版本的代碼,以及解決代碼衝突等。
※ Git(四) 空的資料夾無法被加入 Git 進行版本控制,但這個資料夾如果又是很重要的資料夾,你會怎麼處理? 當空的目錄無法被加入 Git 進行版本控制時,有以下的做法可以解決: 在那個空目錄裡隨便放一個檔案就行了。 在這個資料夾中添加一個名為 .gitkeep 的空檔案,讓 Git 能
Thumbnail
最近在找資料的時候,偶然發現了兩個有趣的 git 指令:git commit --fixup 和 git rebase -i <sha> --autosquash。 研究了下發現對於像我這種每次 commit 都要斤斤計較,盡可能完美的人來說非常好用,因此寫一篇筆記記錄一下用法。
※ 關於Git (二) 請寫下從 Github 上複製一個專案下來,做一次遞交,然後推上去會用到的所有 git 指令。 複製專案(Clone) markdown-here: git clone https://github.com/adam-p/markdown-here.git 如果在訊息
關於Git(一) 版本管理系統是什麼?為什麼要用? 版本管理系統(Version Control System,VCS)是一種追蹤和管理項目代碼、文件和資源變更的工具。 工作流程上可防止每個人因使用自己的開發程式搭配不同且不相容的工具所引起的混亂。版本控制會同步處理版本,並確定變更不會與其他人