Conventional Commits: Uma Abordagem Estruturada para Mensagens de Commit
Aprenda sobre a convenção de mensagens de commit Conventional Commits, seus benefícios e como implementá-la em seus projetos.
Introdução
O Conventional Commits é uma convenção simples que utiliza um conjunto de regras para criar um histórico de commits explícito e consistente. Ele ajuda a manter a clareza e a legibilidade no desenvolvimento de software, facilitando o rastreamento de mudanças e a automação de processos. Neste post, exploraremos o que são Conventional Commits, como utilizá-los e os benefícios que eles trazem para projetos de software.
O que são Conventional Commits?
Conventional Commits é uma especificação que define um padrão para mensagens de commit. Esse padrão visa criar um histórico de commit legível e útil, utilizando tipos de commit bem definidos e uma sintaxe específica. A especificação ajuda a padronizar mensagens de commit, tornando-as mais informativas e estruturadas.
Estrutura das Mensagens de Commit
A estrutura básica de uma mensagem de commit seguindo a convenção é:
    [escopo opcional]: <descrição>
    [corpo opcional]
    [rodapé opcional]
- tipo: Um dos tipos predefinidos de commit (ex.: feat, fix, docs, style, refactor, test, chore).
 - escopo: Opcional, mas útil para fornecer contexto adicional sobre a parte do código que foi alterada.
 - descrição: Uma breve descrição do que foi alterado.
 - corpo: Opcional, fornece uma descrição mais detalhada das mudanças.
 - rodapé: Opcional, utilizado para informações adicionais, como fechamento de issues.
 
Tipos de Commits
Os tipos de commit mais comuns incluem:
- feat: Uma nova funcionalidade.
 - fix: Correção de bug.
 - docs: Alterações na documentação.
 - style: Alterações que não afetam a lógica do código (espaços em branco, formatação, etc.).
 - refactor: Alterações no código que não corrigem bugs nem adicionam funcionalidades.
 - test: Adição ou modificação de testes.
 - chore: Atualizações de tarefas e manutenção do projeto (build tasks, atualizações de dependências, etc.).
 
Exemplo de Mensagens de Commit
Aqui estão alguns exemplos de mensagens de commit seguindo a convenção:
- feat: Adicionando uma nova funcionalidade em Java:
 
  feat(user): add new user registration feature
- fix: Corrigindo um bug em Kotlin:
 
  fix(api): correct null pointer exception on login
- docs: Atualizando a documentação:
 
  docs(readme): update setup instructions
- style: Corrigindo formatação de código:
 
  style(payment): format code according to style guide
- refactor: Refatorando código:
 
  refactor(order): improve performance of order processing
Benefícios dos Conventional Commits
- Clareza: Mensagens de commit padronizadas tornam o histórico de commits mais fácil de entender.
 - Automação: Facilita a automação de processos como geração de changelogs, versionamento semântico e deploys automatizados.
 - Rastreabilidade: Permite rastrear facilmente o que foi alterado e por quê, facilitando a identificação de bugs e a revisão de código.
 - Consistência: Garante que todos os membros da equipe sigam o mesmo padrão, aumentando a coesão do projeto.
 
Ferramentas de Suporte
Existem várias ferramentas que ajudam a implementar e manter Conventional Commits em seus projetos:
- commitlint: Linter para mensagens de commit, garantindo que elas sigam a convenção.
 - commitizen: Ferramenta que facilita a criação de commits seguindo a convenção.
 - semantic-release: Automatiza o versionamento semântico e o lançamento de novas versões baseado nos Conventional Commits.
 
Implementação de Conventional Commits
Vamos ver um exemplo de como configurar o commitlint e o commitizen em um projeto:
- Instalar dependências:
 
  npm install --save-dev @commitlint/{config-conventional,cli} commitizen cz-conventional-changelog
- Configurar commitlint:
Crie um arquivo 
commitlint.config.jsna raiz do projeto: 
    module.exports = { extends: ['@commitlint/config-conventional'] };
- Configurar commitizen:
Adicione o seguinte ao seu 
package.json: 
     "config": {
       "commitizen": {
         "path": "./node_modules/cz-conventional-changelog"
       }
     }
- Adicionar scripts ao package.json:
 
     "scripts": {
       "commit": "git-cz"
     }
Agora, você pode usar npm run commit para criar mensagens de commit que seguem a convenção.
Conclusão
Conventional Commits oferecem uma maneira estruturada e padronizada de escrever mensagens de commit, melhorando a clareza, a rastreabilidade e a automação em projetos de software. Implementar essa convenção pode trazer inúmeros benefícios para a sua equipe, facilitando a colaboração e a manutenção do código.
Para mais conteúdos sobre boas práticas de desenvolvimento e padrões de design, continue acompanhando nosso blog!
Referências:
🔗 Repositório de Exemplos
Aqui o link para nosso laboratório: https://github.com/Nosbielc/nosbielc-dev-demos