Conventional Commits + SemVer + changelog automático
2 min de leitura
Aqui a trilha começa a render frutos: quando seus commits seguem a convenção, ferramentas conseguem ligar o histórico a versões semânticas e a um changelog que se escreve sozinho. É o momento em que "escrever commit certo" deixa de ser burocracia e vira automação.
Relembrando o SemVer
Semantic Versioning (semver) num formato MAJOR.MINOR.PATCH:
- MAJOR (v2.0.0) - mudança que quebra compatibilidade;
- MINOR (v1.3.0) - nova funcionalidade compatível;
- PATCH (v1.3.1) - correção compatível (bug fix).
Agora liga com o que você aprendeu nos tipos:
| Commit | Bump semver |
|---|---|
feat: | MINOR (v1.2.0 → v1.3.0) |
fix: | PATCH (v1.2.3 → v1.2.4) |
BREAKING CHANGE: (footer) | MAJOR (v1.x → v2.0.0) |
chore:, docs:, refactor:... | nenhum |
// histórico que uma ferramenta consegue ler pra versar
// feat(auth): adiciona login
// fix(cart): corrige frete
// -> a ferramenta "vê" feat + fix e sugere v1.3.0 (MINOR + PATCH acumulados)
Não é coincidência: o Conventional Commits foi desenhado para mapear
diretamente no SemVer. É por isso que feat e fix são "especiais".
Changelog automático
Com o mapeamento pronto, uma ferramenta de release (release-please, semantic-release, changesets, conventional-changelog) consegue:
- ler os commits entre duas tags (
git log v1.2.0..v1.3.0); - agrupar por tipo (
feat,fix,docs...); - calcular o bump semver correto;
- gerar/atualizar o
CHANGELOG.mdautomaticamente.
## [1.3.0] - 2026-08-31
### Adicionado
- feat(auth): adiciona login com GitHub
### Corrigido
- fix(cart): corrige frete para múltiplos itens
Você deixa de escrever changelog na mão - e, melhor, o changelog não mente: ele reflete exatamente a mensagem dos commits.
Dica: assim como este repositório, um changelog bem-feito costuma separar "Adicionado / Alterado / Corrigido" seguindo a [Keep a Changelog]. A ferramenta convencional-changelog já gera nesse padrão quando os commits são decentes.
Por que isso importa pro seu time
-
comunicação - consumidores e o time sabem quando uma breaking change vai quebrar (bump major).
-
release repetível - o nó humano chato ("o que entrou nessa versão?") vira automático e auditável.
-
caça ao erro -
git bisect+ mensagens boas + SemVer = achar a origem de um bug de release sem adivinhar. -
SemVer =
MAJOR.MINOR.PATCH;feat→MINOR,fix→PATCH,BREAKING→MAJOR. -
changelog automático = ferramenta lê os commits e gera o doc de release.
-
convenção = o elo que transforma histórico em versão e comunicado.
Dica: experimente rodar
conventional-changelognum repo com histórico bom - o changelog gerado em 5 segundos vale mais que horas de escrita manual.
No próximo nó, vamos ver as ferramentas que forçam e agilizam isso no
dia a dia: commitlint, commitizen, husky e gitmoji.
// Quiz
Se a última versão era v1.4.2 e entra um commit `feat(auth): adiciona login com Google` sem breaking change, qual a próxima versão sugerida pela SemVer automática?