Lefthook vs pre-commit: Gerenciadores de Hook Comparados
O Lefthook é um binário Go único e rápido que roda hooks em paralelo; o pre-commit é um framework Python com um grande registro de hooks prontos.
O Lefthook configura hooks em YAML, os roda em paralelo e é distribuído como um binário único sem dependências, o que o torna rápido e agnóstico de linguagem. O pre-commit, escrito em Python, gerencia ambientes de hook isolados e oferece um enorme ecossistema de hooks compartilháveis fixados por versão, o que é excelente para padronizar verificações entre repositórios. O Lefthook prioriza velocidade e simplicidade; o pre-commit prioriza um catálogo de hooks rico e reproduzível.
| Lefthook | pre-commit | |
|---|---|---|
| Runtime | Binário Go único | Framework Python |
| Ecossistema de hooks | Você define os comandos | Grande registro compartilhado |
| Paralelismo | Embutido | Limitado |
| Isolamento de ambiente | Não | Ambientes por hook |
| Melhor para | Velocidade, simplicidade | Hooks compartilhados e fixados |
No CI
O pre-commit brilha quando você quer um conjunto curado e fixado por versão de hooks da comunidade reaproveitados entre muitos repositórios, e tem um modo de CI limpo. O Lefthook é mais rápido e sem dependências, ideal quando você roda majoritariamente seus próprios comandos e quer paralelismo. Ambos também devem rodar no CI para que as verificações sejam impostas além dos hooks locais.
Acelere
Faça cache dos ambientes de hook (pre-commit) ou das dependências para que as verificações de CI comecem aquecidas. As verificações rodam em runners; runners gerenciados mais rápidos encurtam a execução de hook e lint.
O veredito
Querer um grande registro de hooks compartilháveis e fixados por versão, padronizados entre repositórios: pre-commit. Querer um binário rápido e sem dependências rodando seus próprios comandos em paralelo: Lefthook. Times que valorizam um catálogo de hooks compartilhado tendem ao pre-commit; os focados em velocidade tendem ao Lefthook.