Prefixo | tipos de commit | Semantic release
- Prefixo | tipos de commit | Semantic release
Guia rápido
| Prefixo (Tipo do Commit) | Descrição | Incremento de Versão |
|---|---|---|
| feat: | Nova funcionalidade | 🟢 minor (x.+1.x) |
| fix: | Correção de bug | 🔵 patch (x.x.+1) |
| perf: | Melhoria de desempenho | 🔵 patch (x.x.+1) |
| refactor: | Refatoração sem mudar comportamento | ⚪ nenhum |
| style: | Mudança de formatação, indentação, etc. | ⚪ nenhum |
| docs: | Alteração na documentação | ⚪ nenhum |
| test: | Adição ou atualização de testes | ⚪ nenhum |
| chore: | Tarefas de build, configs, dependências, etc. | ⚪ nenhum |
| ci: | Atualização de pipelines, CI/CD | ⚪ nenhum |
| build: | Mudanças em build scripts ou dependências | ⚪ nenhum |
| revert: | Reversão de commit anterior | ⚪ nenhum |
feat!: ou BREAKING CHANGE: | Mudança incompatível (breaking change) | 🔴 major (+1.x.x) |
🚦 Como o Semantic Release decide a nova versão
| Tipo de Commit | Incremento de Versão | Exemplo de Mensagem |
|---|---|---|
| fix: | 🩹 Patch (x.x.+1) | fix: corrige bug no login |
| feat: | ✨ Minor (x.+1.x) | feat: adiciona botão de login |
| BREAKING CHANGE ou ! | 💥 Major (+1.x.x) | feat!: altera API de autenticação ou feat: nova API\n\nBREAKING CHANGE: remove parâmetro antigo |
| chore: | 🚫 Sem mudança de versão | chore: atualiza dependências, adiciona logs |
| docs: | 🚫 Sem mudança de versão | docs: adiciona exemplo no README |
| style: | 🚫 Sem mudança de versão | style: corrige formatação do código |
| refactor: | 🚫 Sem mudança de versão (a menos que tenha !) | refactor: melhora performance do componente |
| test: | 🚫 Sem mudança de versão | test: adiciona novos testes unitários |
| perf: | 🩹 Patch (dependendo da config) | perf: melhora desempenho do render |
💥 Explicando os tipos que geram versão
1. fix: → Patch
Indica uma correção de bug.
Exemplo:
fix: corrige crash ao clicar no botão
Resulta em:
1.2.3 → 1.2.4
2. feat: → Minor
Indica adição de funcionalidade que não quebra compatibilidade.
Exemplo:
feat: adiciona suporte a login com Google
Resulta em:
1.2.3 → 1.3.0
3. ! ou BREAKING CHANGE: → Major
Indica uma mudança incompatível com versões anteriores.
Exemplo:
feat!: altera assinatura do método de loginou
feat: nova API de autenticação
BREAKING CHANGE: remove método loginAntigo()
Resulta em:
1.2.3 → 2.0.0
⚙️ Personalização
Esses tipos vêm do conventional-changelog-angular, que é o padrão.
Mas você pode personalizar os tipos válidos e quais incrementam versão no arquivo release.config.js ou semantic-release no package.json.
Exemplo de custom config:
module.exports = {
branches: ['main'],
plugins: [
['@semantic-release/commit-analyzer', {
preset: 'angular',
releaseRules: [
{ type: 'chore', release: 'patch' },
{ type: 'refactor', release: 'minor' },
{ type: 'docs', release: false },
],
}],
'@semantic-release/release-notes-generator',
'@semantic-release/npm',
'@semantic-release/github',
],
};