Guia Completo para Padronização de Commits: Commitlint, Husky e Commitizen
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.