pre-commit vs Husky: Qual Gerenciador de Hooks?
O pre-commit é um framework Python com um grande registro de hooks fixados e reutilizáveis; o Husky é um gerenciador de git hooks nativo do Node, popular em projetos JS.
O pre-commit gerencia ambientes de hook isolados e puxa de um grande catálogo de hooks da comunidade fixados por versão, o que o torna forte para repositórios poliglotas e verificações consistentes e reproduzíveis. O Husky é o padrão do ecossistema JavaScript, conectando git hooks com configuração mínima e combinando naturalmente com lint-staged e npm scripts. O pre-commit é agnóstico de linguagem e orientado a registro; o Husky é nativo de JS e leve.
| pre-commit | Husky | |
|---|---|---|
| Runtime | Python | Node |
| Linguagens | Qualquer | Centrado em JS |
| Origem dos hooks | Registro compartilhado, fixado | Seus scripts |
| Isolamento de ambiente | Por hook | Não |
| Melhor para | Poliglota, reproduzível | Projetos Node |
No CI
O pre-commit é uma ótima escolha para repositórios multilinguagem e para reutilizar hooks padronizados entre projetos, com um modo de CI embutido. O Husky serve a repositórios JS/TS que já usam npm e lint-staged. Ambos rodam localmente, então espelhe as verificações em um job de CI para impô-las independentemente da configuração de cada desenvolvedor.
Acelere
Faça cache dos ambientes de hook (pre-commit) ou do node_modules (Husky) 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 lint e teste.
O veredito
Um repositório poliglota querendo hooks da comunidade reutilizáveis e fixados por versão: pre-commit. Um projeto JavaScript querendo a opção leve e nativa do ecossistema: Husky. Escolha pela mistura de linguagens - pre-commit para muitas linguagens, Husky para JS em primeiro lugar - e imponha as verificações no CI também.