Skip to content
Latchkey

Husky vs Lefthook: Gerenciando Git Hooks

O Husky é o gerenciador de git hooks baseado em Node amplamente usado; o Lefthook é um binário único, rápido e agnóstico de linguagem que roda hooks em paralelo.

O Husky configura git hooks para projetos Node com configuração mínima e é o padrão para muitos times JavaScript, normalmente combinado com lint-staged. O Lefthook é um binário Go independente que funciona para qualquer linguagem, configura hooks em YAML e roda comandos em paralelo com filtragem por glob embutida. O Husky é nativo do ecossistema JS e onipresente; o Lefthook é mais rápido e agnóstico de linguagem.

HuskyLefthook
RuntimeNodeBinário Go único
LinguagensCentrado em JSQualquer linguagem
ParalelismoVia lint-stagedEmbutido
ConfiguraçãoScripts de hookYAML
Melhor paraProjetos NodePoliglota, velocidade

No CI

Os hooks rodam principalmente localmente, mas as mesmas verificações devem ficar no CI como o portão de verdade. O Husky encaixa em repositórios Node que já usam a tooling do npm; o Lefthook roda em qualquer lugar sem Node e paraleliza as verificações, o que ajuda em grandes suítes de pre-commit. De qualquer forma, espelhe os comandos dos hooks em um job de CI para que as verificações sejam impostas independentemente da configuração local.

Acelere

Rode os mesmos comandos de lint/test no CI e faça cache das dependências para que comecem aquecidas. As verificações de CI rodam em runners; runners gerenciados mais rápidos encurtam a execução de lint e teste.

O veredito

Um projeto centrado em Node que quer a opção onipresente e bem documentada: Husky. Um repositório poliglota ou que quer um binário rápido, sem dependências e com hooks paralelos: Lefthook. Qualquer que seja sua escolha, imponha as mesmas verificações no CI em vez de depender apenas dos hooks.

Guias relacionados