Lefthook是一個高性能Git hook管理器,在Go語言上開發,適用於Node.js、Ruby、Python和其他技術棧上的項目。您可以使用Go工具、NPM、gem或pipx包管理器輕鬆安裝它,然後在乾淨的lefthook.yml配置文件中定義掛鈎規則,並運行lefthook安裝命令來啟用它們。
該工具支持並行執行hook命令,通過外卡/正規表達過濾指定文件,與腳本執行、標籤分組、Docker容器運行兼容,還支持本地配置覆蓋。這些功能將執行速度與靈活性結合起來,讓您完全控制代碼檢查過程。
使用Lefhook,您可以在代碼提交和推送期間自動執行代碼語法檢查和合規性檢查,高效且沒有額外的依賴項,從而節省大量開發時間並毫不費力地維護項目代碼的整潔性。
在團隊合作中, Git鉤子 常常抱有厚望:
提交前運行格式化、檢查代碼風格並阻止明顯的錯誤。
但現實情況往往是配置分散、執行緩慢、不同成員環境不一致,最終被繞過或放棄。
萊夫胡克 就是為了解決這些問題而誕生的。
什麼是Lefhook?
左撇子是一個 基於Go語言開發的高性能Git hook管理器,用於統一管理 pre-commit以及Git hook的執行邏輯。預推
它不關心你的項目使用什麼語言或框架,Node.js,Ruby,Python,甚至只使用腳本的項目都可以直接使用。
該項目由 邪惡的火星人 並且具有非常以工程為導向的設計,目標明確:
使本地代碼檢查快速可靠。
為什麼你需要左撇子鉤?
原生Git掛鈎存在幾個長期存在的問題:
- 掛鈎是本地文件 並且不受版本控制
- 團隊成員配置容易出現不一致
- 劇本很複雜,而且 執行速度明顯慢於提交
- 跨語言項目難以統一管理
萊夫胡克的想法很簡單:
將掛鈎視為項目的一部分,在配置文件中統一描述它們,並使用高性能執行器對其進行調度。
核心功能概述
高性能執行(Go實現)
Leftook本體是用Go語言編寫的,啟動成本非常低。
與腳本解決方案相比,區別在於 承諾 在常見的場景中非常明顯。
簡單、集中的配置
所有掛鈎都寫在一個中 lefthook.yml ,例如:
預提交:
平行:真
命令:
棉絨:
運行:nPM運行lint
測試:
運行:nPM測試
配置 清晰、可讀且可審查,並直接進入Git存儲庫。
並行執行以減少等待時間
多個檢查可以並行運行,而不是連續阻止。
這對於包括lint + Test + typecheck的項目非常關鍵。
準確的文檔篩選能力
支持 外卡和正規表達式 僅觸發對相關文件的檢查,例如:
- 只是改變
.js該文件,沒有Python測試 - 僅更改了文檔,尚未採取構建過程
這使得掛鈎變得「聰明」而不是「暴力」。
完全支持收件箱、標籤和Docker
Lefhook不限制運行命令的方式:
- 本地腳本
- nPM / pip / bundle命令
- Docker容器
- 任務按標籤分組和重複使用
複雜的項目也可以清晰地結構化。
本地超越
在團隊統一規則的基礎上,個人還可以進行局部調整。
考慮到現實環境中的一致性和差異性。
靈活的安裝
Lefhook支持多種安裝渠道:
- Go工具鏈
- npm
- Ruby gem
- 皮克斯
安裝後,您需要做的就是:
左撇子安裝
以在您的項目中啟用掛鈎配置。
Github:https://github.com/evilmartians/lefthook
管材: