Escrevendo commits semânticos com Conventional Commits, Commitzen e Husky
O que é Conventional Commit?
Conventional Commit é uma convenção para escrever mensagens de commit padronizadas. Ele fornece um conjunto fácil de regras para a criação de um histórico de commits explícitos e bem organizados. Esta convenção descreve os features, correções, refatorações, documentações e alterações importantes feitas de forma clara e objetivo nas mensagens de commit.
De acordo com a documentação do CC, a configuração mais básica de mensagem de commit pode ser estruturada da seguinte forma:
<type>[scope]: <description>
Onde os tipos podem ser:
- feat: construção de uma nova funcionalidade no sistema
- fix: correção de um bug ou uma melhoria
- teste — modificar testes existentes ou adicionar novos
- refatorar — alterar o código de uma maneira que não corrige um bug nem adicione recursos
- docs — modificando a documentação
- chore — tarefas de rotina, como atualizar dependências
Configurando o commitzen e husky para facilitar esse processo
O Commitzen nada mais é do que uma CLI que irá nos ajudar a montar as mensagens de commits seguindo as boas práticas da convenção Conventional Commit. Em complemento com o Husky, a automatização desse processo será feita.
- Então o primeiro passo é instalar o commitzen e o husky como dependências de desenvolvimento:
npm install commitizen husky -D
2. Em seguida, instale o módulo adaptador npm que inicializará seu projeto para usar a mensagem seguindo o Conventional Commit.
Se estiver usando npm:
commitizen init cz-conventional-changelog --save-dev --save-exact
Se estiver usando yarn:
commitizen init cz-conventional-changelog --yarn --dev --exact
Agora adicione o código a seguir em seu package.json, aí é onde está o path das regras do commitzen:
"config": {
"commitizen": {
"path": "cz-conventional-changelog"
}
}
E esse código se trata da configuração do husky a ferramenta que vai automatizar a exibição da CLI do commitzen:
"husky": {
"hooks": {
"prepare-commit-msg": "exec < /dev/tty && npx cz --hook || true"
}
}
Pronto! Digite git commit em seu terminal, vai ser exibido uma CLI com o passo a passo que lhe ajudará a montar a mensagem de commit que segue o padrão Conventional Commit.