Guia Completo para Padronização de Commits: Commitlint, Husky e Commitizen

Vinícius G. Oliveira
3 min readJan 23, 2024

--

Git | GitHub | Commits

Introdução

O Git desempenha um papel fundamental no desenvolvimento de software, permitindo o versionamento do código e o registro meticuloso de todas as alterações. Cada ponto na linha do tempo é marcado por um commit, encapsulando um conjunto específico de modificações.

A importância de mensagens de commit claras e padronizadas torna-se evidente para manter um histórico compreensível, especialmente em projetos com tecnologias JavaScript como Node.js, React e Next.js.

Este guia abrangente explora a padronização de commits usando três bibliotecas essenciais: Commitlint, Husky e Commitizen. Vamos mergulhar na prática de commits atômicos, padronização de mensagens e práticas como Conventional Commits e Semantic Versioning.

Commits Atômicos

A prática de commits atômicos envolve criar um commit para cada modificação, proporcionando uma linha do tempo mais descritiva e facilitando a identificação de alterações específicas. Isso é particularmente valioso em ambientes JavaScript, onde a modularidade é uma prática comum.

Padronização dos Commits

Padronizar as mensagens de commits é crucial para um histórico coeso. Introduzimos o Conventional Commits, uma convenção que define regras para um histórico fácil de ler. Exemplos de tipos incluem:

  • chore: Atualização de tarefas que não impactam o código de produção.
  • feat: Adições de novas funcionalidades.
  • fix: Correções de bugs.
  • refactor: Mudanças que não alteram a funcionalidade final.
  • docs: Inclusão ou alteração em arquivos de documentação.

Semantic Versioning (Versionamento Semântico)

Compreender o Semantic Versioning é essencial para interpretar as versões de pacotes JavaScript. Essa prática é crucial para garantir compatibilidade e entender as implicações de atualizações de dependências.

Commitlint

Commitlint é utilizado para verificar se as mensagens de commit seguem padrões predefinidos, garantindo consistência e facilitando a revisão do histórico.

Husky

Husky simplifica a criação de ganchos (hooks) Git, automatizando a execução do Commitlint antes de cada commit. Essa automação assegura que as mensagens de commit estejam em conformidade com as diretrizes definidas.

Commitizen

Commitizen oferece uma interface interativa que simplifica a criação de commits seguindo o padrão do Conventional Commits. Esta ferramenta é particularmente útil para facilitar a adoção do novo padrão e garantir a consistência nas mensagens de commit.

Instalando e Configurando as Bibliotecas

Instalando o Commitlint

yarn add @commitlint/config-conventional @commitlint/cli -D
echo "module.exports = { extends: ['@commitlint/config-conventional'] };" > commitlint.config.js

Instalando o Husky

yarn add husky -D
yarn husky install
"scripts": { "prepare": "husky install" }
yarn husky add .husky/commit-msg 'yarn commitlint --edit $1'

Instalando o Commitizen

yarn add commitizen -D
yarn commitizen init cz-conventional-changelog --yarn --dev --exact
"scripts": { "commit": "git-cz" }

Exemplos de Uso

Exemplo de commit utilizando Commitizen:

git add .
yarn commit

Considerações Finais

Este guia oferece uma abordagem prática para padronização de commits em projetos JavaScript, promovendo a clareza e consistência no histórico. A adoção gradual dessas práticas pode aprimorar a colaboração e facilitar a manutenção do código. Experimente essas ferramentas em projetos menores antes de implementá-las em grande escala, e compartilhe essa prática valiosa com a comunidade de desenvolvedores.

Espero que este guia contribua significativamente para a melhoria da qualidade e organização do seu código.

Fique à vontade para fornecer feedback.

Siga a Padronização, Melhore o Seu Workflow!

--

--