思想,因人而異,難以重複
寫程式碼時,每個人的習慣是不一樣的,所以,引入了程式碼規範,為了省力,引入了自動格式化程式碼工具,前端工程中比較典型的自動格式化程式碼工具如:Prettier · Opinionated Code Formatter
日常多人共同作業寫程式碼時,需要不斷提交、推播、拉取程式碼,提交程式碼時,需要輸入一段Message來表述這次提交變更,思想因人而異,每個人寫的Message都風格各異,所以,引入了提交規範,以及引入了提交規範輔助工具
可以檢視一些經典開源專案的提交歷史:
這些提交資訊看起來比較易讀且工整,表達資訊較為明確,整體較為規範
Git是常用的版本控制工具,本文描述使用Husky、commitlint等工具實現Git程式碼提交規範
如同其他許多的版本控制系統一樣,Git 也具有在特定事件發生之前或之後執行特定指令碼程式碼功能(從概念上類比,就與監聽事件、觸發器之類的東西類似),Git Hooks 就是那些在Git執行特定事件(如commit、push、receive等)後觸發執行的指令碼,掛鉤是可以放置在掛鉤目錄中的程式,可在git執行的某些點觸發動作
使用Git Hooks可以實現:
更為詳細的Git Hooks介紹與使用可以參考:
使用Git Hooks可以實現程式碼格式化、提交資訊規範化,但是需要手動編寫指令碼,而Husky就是簡化編寫這些指令碼的工具
Husky的官網:Husky - Git hooks (typicode.github.io)
參考官網,可以快速使用Husky:
安裝以及初始化:
npx husky-init && npm install
在專案中使用時,如果沒有package.json
檔案會執行失敗,需先執行npm init
執行完上述命令後,可以發現專案中出現了新的資料夾.husky
,下面有一個pre-commit
:
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
npm test
其作用主要是在commit之前執行npm test
為什麼會執行這個命令呢?因為在<專案名>/.git/config 中新設定有:
hooksPath = .husky
即,Git Hooks的目錄變更為.husky
,Git處理時會自動應用該目錄中的指定的命令(如,提交前執行npm test
)
接下來,只需要安裝程式碼格式化工具並在pre-commit
中寫入執行命令即可提交前自動格式化
ESLint時常用的程式碼格式化工具,常用的還有Prettier
官網為:Find and fix problems in your JavaScript code - ESLint - Pluggable JavaScript Linter
參考官網的手冊:Getting Started with ESLint - ESLint - Pluggable JavaScript Linter
可以快速的使用ESLint:
安裝:
npm init @eslint/config
然後根據提示進行操作即可安裝完成
格式化檔案程式碼:
npx eslint yourfile.js
執行npx eslint <yourfile.js>
即可格式化程式碼檔案
此處,當然可以提交前格式化所以程式碼檔案,但是,每次提交的檔案修改只是部分,並不需要把所有的程式碼檔案進行格式化操作
只需把提交修改的檔案,即暫存區的檔案進行格式化操作即可
見字識義,lint-staged工具就是對暫存區的程式碼檔案進行格式化
GitHub站點為:okonet/lint-staged: