規範git commit的提交記錄

📖博客原文 :xxoo521.com《規範git commit的提交記錄(交互式命令行)》javascript

隨着項目體積的增長,參與到項目中的同窗愈來愈多,每一個人都有本身的打 git log 的習慣:前端

  • 格式 1: add: 添加...
  • 格式 2: [add]: 添加...
  • 格式 3: Add 添加...

爲了造成統一的規範,達成共識,從而下降協做開發成本,須要對 git commit 記錄進行規範。java

規範 git commit 記錄

規範 git commit 記錄,須要作兩件事情:node

  • 經過交互式命令行,自動生成符合指定規範的 commit 記錄
  • 提交記錄後,在 git hooks 中進行 commit 記錄格式檢查

問:既然已經交互式生成了規範記錄,爲何須要在 hooks 進行檢查?git

交互式生成 commit 記錄,須要用戶調用自定義的 npm scripts,例如npm run commit。但仍是能夠直接調用原生 git 命令 git commit 來提交記錄。而檢查是在正式提交前進行的,所以不符合要求的記錄不會生效,須要從新 commit。算法

調研:交互式 commit log 規範方案

前期調研結果,關於 commit 提示有兩種作法:shell

  1. 直接使用 commitizen 中經常使用的 adapter
  2. 根據團隊的須要,自定義 adapter

方法 1 的優缺點:npm

優勢 1: 直接安裝對應的 adapter 便可json

優勢 2: 無開發成本ui

缺點 1: 沒法定製,不必定知足團隊須要

方法 2 的優缺點:

優勢 1: 可定製,知足開發需求

優勢 2: 單獨成庫,發佈 tnpm,做爲技術建設

缺點 1: 須要單獨一個倉庫(但開發成本不高)

代碼實現

在實際工做中,發現方法 1 中的經常使用規範,足夠覆蓋團隊平常開發場景。因此,選擇了方法 1.

step1: 安裝 npm 包

npm i --save-dev commitizen cz-conventional-changelog @commitlint/cli @commitlint/config-conventional husky
複製代碼

添加 package.json 的配置:

"scripts": {
    "commit": "git-cz"
},
"husky": {
    "hooks": {
        "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
    }
},
"config": {
    "commitizen": {
      "path": "./node_modules/cz-conventional-changelog"
    }
}
複製代碼

在項目根目錄下建立commitlint.config.js

module.exports = {
    extends: ["@commitlint/config-conventional"]
};
複製代碼

使用方法:再也不使用git commit -m ...,而是調用npm run commit

👇掃碼關注「心譚博客」,查看「前端圖譜」&「算法題解」,堅持分享,共同成長👇

相關文章
相關標籤/搜索