Não, não é sobre a raça de cães. É uma ferramenta para escrever git hooks de modo mais simples. E aqui vamos direto ao ponto, sem explicar muita coisa. Talvez depois eu faça outro artigo com mais explicações.
A versão 8.0.0 mudou a forma como o husky funciona e como pode ser configurado. É bem simples!
Para instalar ele em seu projeto basta digitar:
npm install husky --save-dev
Isso vai instalar o husky (em julho de 2022 foi a versão 8.0.0) e salvar ele na lista devDependencies do package.json.
Depois de instalar você precisa habilitar o husky. O comando abaixo vai criar o diretório .husky e modificar o caminho do git hooks (configução do git core.hooksPath) para o diretório recém criado:
npx husky install
Esse será o diretório em que os hooks serão salvos a partir de agora.
Agora vamos criar um hook de pre-commit:
npx husky add .husky/pre-commit "npm test"
Ali onde está “npm test” você pode adicionar mais comandos como “npm test && npm run eslint” caso você queira que ele execute os testes e o linter de código. O comando acima irá criar o arquivo pre-commit dentro do diretório .husk.
Não esqueça de adicionar esse arquivo no git:
git add .husky/pre-commit
Pronto, somente com esses passos você já terá o husky configurado e rodando. Para testar, você pode criar um teste unitário que irá falhar e depois tentar fazer um commit pra ver o que acontece!
Para que todos da equipe já tenham o husky configurado ao baixar o projeto e executar o npm install é só criar a linha abaixo na seção “scripts” do seu package.json:
"prepare": "husky install && npx husky add .husky/pre-commit \"npm test && npm run eslint\""
Isso irá fazer toda a configuração do husky quando um desenvolvedor clonar o projeto e executar npm install. Vai criar o diretório .husky, depois vai adicionar o hook de pre-commit com os comandos “npm test” e “npm run eslint“.
Neste pequeno artigo foquei somente em instalar o husky e deixar ele utilizável. Não contemplei aqui testes unitários e nem configurações do eslint.
Uma observação é que para um problema de lint barre o commit o problema deve retornar 2 e não 0 ou 1 (zero é desligada a validação e 1 é somente um warning. O 2 irá retornar um error caso o lint pegue algum problema).
Outra consideração é que o diretório .husky deve estar no mesmo nível do .git. Isso pode ser modificado, mas para uma primeira vez seguir o padrão da biblioteca vai ajudar no entendimento. Quando estiver mais familiarizado você vai olhando na documentação e testando as possibilidades que existem.