一、引言
使用規范的提交信息可以讓項目更加模塊化、易于維護和理解,同時也便于自動化工具(如發布工具或 Changelog 生成器)解析和處理提交記錄。
通過編寫符合規范的提交消息,可以讓團隊和協作者更好地理解項目的變更歷史和版本控制,從而提高代碼維護效率和質量。
二、用到的插件
Commitizen
作用:Commitizen 是一個命令行工具,用于幫助開發者編寫符合規范的 Git 提交信息;
功能:提供交互式命令行界面,引導用戶填寫提交信息。支持多種提交規范(如 Angular Commit Message Conventions)。通過插件(如 cz-conventional-changelog)擴展功能;
使用場景:當你希望團隊遵循統一的提交信息格式時,可以使用 Commitizen 來規范提交行為;
cz-conventional-changelog
作用:這是 Commitizen 的一個適配器(adapter),基于 Angular 提交規范;
功能:提供符合 Angular 規范的提交信息模板(如 feat、fix、docs 等類型)。與 Commitizen 配合使用,確保提交信息格式統一;
使用場景:當你使用 Commitizen 時,可以通過 cz-conventional-changelog 來定義提交信息的格式;
conventional-changelog-cli
作用:用于根據 Git 提交歷史自動生成變更日志(Changelog),幫助開發者自動創建清晰且一致的 CHANGELOG.md 文件,從而簡化了軟件發布過程中手動維護變更記錄的繁瑣工作;
功能:解析符合規范的提交信息,生成格式化的 Changelog 文件(如 CHANGELOG.md);
使用場景:當你需要為項目生成版本更新日志時,可以使用此工具;
三者之間的關系
Commitizen 是核心工具,用于規范提交信息;
cz-conventional-changelog 是 Commitizen 的插件,定義了提交信息的格式(基于 Angular 規范);
conventional-changelog-cli 是一個獨立的工具,用于根據提交歷史生成 Changelog;
三、安裝步驟
- 安裝 commitizen
npm install commitizen -D
- 安裝cz-conventional-changelog
npm install cz-conventional-changelog -D
- 配置package.json
"config": {"commitizen": {"path": "./node_modules/cz-conventional-changelog"}
}
如圖所示:
- package.json中添加一個指令,如commit:
"commit": "git-cz"
如圖所示:
- 運行該指令:
npm run commit
如圖所示:
這里我提交的是一個bug的修復,選擇fix:
說明:
feat: 新增一個功能
fix: 修復bug
docs: 僅僅修改了文檔,比如README, CHANGELOG, CONTRIBUTE等等
style: 僅僅修改了空格、格式縮進等等,不改變代碼邏輯
refactor: 代碼重構,沒有加新功能或者修復bug
perf: 優化相關,比如提升性能、體驗
test: 測試用例,包括增加缺失用例或者修正測試用例
- 安裝conventional-changelog-cli
npm install -S conventional-changelog-cli
- 在項目根目錄下新建CHANGELOG.md,如圖所示:
- package.json 添加指令
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s",
如圖:
- 運行命令:
npm run changelog
生成的日志如下圖: