Categorias
Dicas Nodejs

Adicionando Husky ao seu projeto Nodejs

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.