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其它相關文章!
推薦閱讀:
- npm的安裝與使用
- 你可能不知道的package.json屬性詳解
- 最全的package.json解析
- Java Git Commit Message使用規范
- 支持cjs及esm的npm包實現示例詳解