JavaScript開發過程中規范commit msg意義詳解

規范 commit msg 的意義

規范化、格式化的 commit message 可以讓我們更好的追蹤需求的演進、回滾時能夠快速的找到提交、最次也能讓我們的倉庫顯的更專業。

團隊如何規范 commit msg呢,靠宣講、靠文檔?當然得靠工具生成和約束。前端圈輪子那麼多,這種工具不在話下。

  • commitizen 問答式生成 commit msg 格式化
  • commitlint 校驗卡控 commit msg 規范化

commitizen

commitizen: simple commit conventions for internet citizens.

commitizen/cz-cli 借助它提供的 git cz 命令替代 git commit 命令,生成符合規范的 commit message。

commitizen 默認的提交規范是 angular 團隊強規定的,若想自定義我們還需配合 Adapter(適配器)此處我們用cz-customizable

下面我們直接來介紹項目級配置。

進行 commitizen 配置

執行 npm install -D commitizen、npm install -D cz-customizable命令

然後在 package.json文件中 scripts 和 config 字段進行配置

{
  "scripts": {
    "commit": "cz"
  },
  "config": {
    "commitizen": {
      "path": "./node_modules/cz-customizable"
    },
    "cz-customizable": {
      "config": ".cz-configrc.js"
    }
  }
}

添加 .cz-configrc.js文件

在項目的根目錄下執行 npm run commit試試吧

後續t npm run commit 替換 git commit

commitlint

如何保證組內成員都使用npm run commit命令呢?當然是用工具。

這裡我們用 commitlint,作用和 eslint 類似。利用 git hooks 攔截不符合規范的 commit msg。

安裝依賴

npm install --save-dev @commitlint/{config-conventional,cli} 
npm install yorkie --save-dev

添加 .commitlint.config.js 文件

擴展開源配置,然後再添加部分個性化 rules

配置 git hooks

為瞭攔截不規范的 commit msg,需要利用 git hooks 的 commit-msg 自動執行 commitlint

"gitHooks": {
  "commit-msg": "commitlint -e $GIT_PARAMS"
}

亂輸入一個 commit msg 試試,發現非常神奇。卡控生效瞭。

按照以上步驟就可以規范你們團隊的 commit msg瞭。

總結一下:

step 1: 安裝依賴

npm install -D commitizen cz-customizable
npm install -D @commitlint/{config-conventional,cli}
npm install -D yorkie 

step 2: 添加配置文件

自定義格式的commitizen配置文件 .cz-configrc.js ,校驗規范的 .commitlint.config.js 文件

配置 package.json

{
  "scripts": {
    "commit": "cz"
  },
  "config": {
    "commitizen": {
      "path": "./node_modules/cz-customizable"
    },
    "cz-customizable": {
      "config": ".cz-configrc.js"
    }
  },
  "gitHooks": {
    "commit-msg": "commitlint -e $GIT_PARAMS"
  }
}

git cz 的原理

如果你是全局按照的 commitizen,你還能用 git cz命令代替 npm run commit

git cz 是什麼玩意? git 的命令,還 commitizen 的命令。

通過查閱資料 git cz 是 commitizen 利用 git 的文件命名規范生成的自定義 git 命令。

Git遵循命名約定git-<subcmd>自動解析PATH中可執行文件中的子命令。 這些子命令可以用git <subcmd>執行。

我們看下 commitizen 倉庫 package.json 的 bin 字段。真香大白瞭,就是 git 的自定義命令

 "bin": {
    "cz": "./bin/git-cz",
    "git-cz": "./bin/git-cz",
    "commitizen": "./bin/commitizen"
  },

以上就是JavaScript開發過程中規范commit msg意義詳解的詳細內容,更多關於開發規范commit msg意義的資料請關註WalkonNet其它相關文章!

推薦閱讀: