本文從淺入深的介紹整個commitlint+husky規(guī)范commit日志的使用,先介紹如何時候,最后部分講解原理梭域。
為什么需要規(guī)范commit日志?
1搅轿、commit message 是程序員開發(fā)的日常操作, 但是實(shí)際工作中卻常常被大家忽略
2病涨、目前commit message 處于五花八門的書寫風(fēng)格,十分不利于閱讀和維護(hù)
3璧坟、優(yōu)秀的互聯(lián)網(wǎng)科技公司都有一套代碼提交規(guī)范既穆,尤其是在一些大型開源項(xiàng)目中,commit message 都是十分一致
規(guī)范commit日志的好處
1雀鹃、團(tuán)隊(duì)形成一致的代碼提交風(fēng)格幻工,更好的提高工作效率
2、規(guī)范的 commit message 有助于團(tuán)隊(duì)其它人員 review, 還可以有效的輸出 CHANGELOG, 對項(xiàng)目十分重要
3黎茎、成為一名有追求的工程師
安裝步驟
1囊颅、環(huán)境準(zhǔn)備:安裝node環(huán)境,從Node.js官網(wǎng)(https://nodejs.org/en/)下載對應(yīng)平臺的安裝程序,終端執(zhí)行命令 node -v 和 npm -v 可以查看安裝的node踢代,npm的版本號盲憎,出現(xiàn)如下即成功。
2胳挎、commitlint饼疙、husky安裝
步驟一:創(chuàng)建默認(rèn)package.json文件、進(jìn)入項(xiàng)目目錄慕爬,右鍵git bash here宏多,運(yùn)行命令:npm init -y,澡罚,此時項(xiàng)目目錄就出現(xiàn)了package.json文件伸但。
步驟二:初始化package.json文件內(nèi)容,運(yùn)行命令:npm init留搔,按照提示輸入內(nèi)容即可,生成如下內(nèi)容更胖。
{
? "name": "commitlint-husky",
? "version": "1.0.0",
? "description": "commitlint",
? "main": "index.js",
? "directories": {
? ? "doc": "doc"
? },
? "scripts": {
? ? "test": "echo \"Error: no test specified\" && exit 1"
? },
? "repository": {
? ? "type": "git",
? ? "url": "http://10.10.8.201/caxs/caxs-artemis.git"
? },
? "keywords": [],
? "author": "geekspring",
? "license": "ISC",
步驟三:安裝commitlint插件
命令:
npm install --save-dev @commitlint/cli?@commitlint/onfigconventional?@commitlint/config-angular
步驟四:安裝husky
命令:npm install --save-dev husky
在package.json中添加husky
"husky": {
? ? "hooks": {
? ? ? "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
? ? }
? }
步驟五:安裝changelog插件,方便查看changlog日志文件
命令:npm install --save-dev?conventional-changelog-cli
在package.json文件中添加changlog命令隔显,方便查看
"scripts": {
? ? "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s"
? }
到此就安裝完畢啦却妨。
規(guī)則使用
方式一:使用angular團(tuán)隊(duì)的規(guī)則,在項(xiàng)目目錄下創(chuàng)建commitlint.config.js文件括眠,加入如下配置即可:
module.exports = {extends: ['@commitlint/config-angular']};
方式二:自定義規(guī)則文件內(nèi)容彪标,創(chuàng)建commitlint.config.js文件,加入如下配置:
rule配置說明:
rule由name和配置數(shù)組組成
1掷豺、數(shù)組中第一位為level捞烟,可選0,1,2,0為disable当船,1為warning题画,2為error
2、第二位為應(yīng)用與否德频,可選always|never
3苍息、第三位該rule的值
使用效果圖
錯誤示例:
正確示例:
查看changlog日志,根據(jù)配置的命令 npm??changelog
原理介紹
commitlin介紹
目前國內(nèi)外規(guī)范使用較多的是 Angular 團(tuán)隊(duì)的規(guī)范, 目前規(guī)范參考Angular 團(tuán)隊(duì)比較多壹置。直接看如下參考資料很詳細(xì)竞思。
參考資料:
https://blog.csdn.net/y550918116j/article/details/81214746
https://www.npmjs.com/package/@commitlint/config-angular
https://blog.csdn.net/peterxiaoq/article/details/76144288
husky介紹:
? ? ? husky 是一個為 git 客戶端增加 hook 的工具。
? ? ? 在.git/ 目錄下增加husky鉤子盖喷,在 pre-commit 階段自動執(zhí)行保證每一個 commit 的commit message的正確性
追根溯源:
git對提交的內(nèi)容會校驗(yàn),校驗(yàn)主要分為:
? ? 1患亿、 服務(wù)端pre-receive鉤子
? ? 2传蹈、客戶端的pre-commit鉤子
? ? 客戶端的pre-commit鉤子驗(yàn)證提高服務(wù)端的鉤子驗(yàn)證效率,可以理解為:
服務(wù)端的pre-receive鉤子:后端驗(yàn)證
客戶端的pre-commit鉤子:前端驗(yàn)證
前端驗(yàn)證的效率高于惦界,將所有的驗(yàn)證都放在后端,故此沾歪,在pre-commit處增加了husky鉤子
鉤子判斷壞的commit 會被拒絕在本地漂彤,本地只能將鉤子可以通過的代碼提交到中心倉庫。