Tipos de apoio: chore, docs, refactor e os outros
2 min de leitura
feat e fix são os únicos que mudam a versão por padrão. O resto do tempo
você está mexendo em coisas que não alteram o comportamento pra quem usa:
organizar código, escrever doc, ajustar build. Esses são os tipos de apoio.
os mais comuns
-
chore- tarefa de manutenção que não mexe em código de produto: atualizar dependência, ajustar CI, renomear arquivo de config.chore(deps): atualiza typescript de 5.4 para 5.6 -
docs- muda só em documentação.docs(readme): explica como rodar o projeto localmente -
refactor- reescreve código sem mudar comportamento. É a grande diferença: se quebrou ou acrescentou comportamento, não é refactor.refactor(auth): extrai validação de senha para função própria -
test- mexe em testes (novos, corrigidos, reestruturados), sem tocar no código de produção.test(cart): cobre cálculo de frete com frete grátis e pago -
style- formatação/aparência do código: espaçamento, ponto e vírgula, lint que não muda lógica. Não confundir com CSS de produto: mudança visual na interface do usuário éfeat(componente novo) oufix(visual quebrado).style: aplica prettier no diretório src -
build- mudanças no sistema de build ou dependências externas (npm, webpack, dockerfile): diferente dechorepor focar em build/empacotar.build(docker): ajusta multi-stage build para reduzir imagem -
ci- apenas configuração de integração contínua (GitHub Actions, scripts de pipeline), sem tocar em código de produção. -
perf- melhora performance sem mudar o comportamento visível. Em geral não dispara bump por padrão (sófeat/fix/BREAKING CHANGEmexem na versão na maioria das ferramentas). Se a otimização muda contrato público, éfeat!ouBREAKING CHANGE; se é interna,perfpuro.
perf(lista): memoiza renderização de itens
revert- desfaz um commit anterior. Tem uma sintaxe específica: o body descreve qual SHA está sendo revertido, pra manter rastreabilidade.
revert: feat(auth): adiciona login com Google
Reverts abc1234
Dica: a comunidade usa mais tipos do que a especificação cita (ex.:
feat,fix,refactor,test) e cada time costuma fechar a própria lista ali. O importante é ter poucos tipos, bem definidos - não 15 - pra que ler o histórico continue sendo rápido.
Tirando a ambiguidade: chore vs build vs ci
A linha entre esses três é fina e confunde. Regra prática:
| Mudança | Type |
|---|---|
Atualizar/atualizar dependência (package.json, Cargo.toml, etc.) | build (foco no build) ou chore(deps) (se o time usa) |
Mexer em Dockerfile, webpack.config, vite.config, bundler | build |
| Adicionar/ajustar step no GitHub Actions, pipeline de CI | ci |
| Tarefa interna sem impacto em build/dependência/CI (renomear config, ajustar script) | chore |
Quando o time é pequeno e o vocabulário único não importa muito, alguns colapsam
tudo em chore e pronto. O importante é o time fechar a escolha e o
commitlint refletir.
Como escolher entre os parecidos
O atalho do estilo type: muda o que pra quem:
-
mexeu no comportamento do usuário? →
feat(novo) oufix(errado). -
mexeu na forma, mantendo o comportamento? →
refactor. -
mexeu em doc/test/CI/build? →
docs/test/ci/build. -
não encaixou em nenhum / manutenção genérica? →
chore. -
tipos de apoio =
chore,docs,refactor,test,style,build,ci,perf. -
regra = nenhum deles muda a versão por padrão (só
feat/fix/BREAKING). -
coesão = poucos tipos, bem definidos; evite tipos inventados demais.
Dica: se o time ainda não fechou a lista de tipos, comece com um subconjunto pequeno e cresça sob demanda.
feat,fix,refactor,docs,test,chorejá cobrem ~90% dos commits.
No próximo nó, vamos ver escopo e assunto - o que colocar (ou não) na primeira linha.
// Quiz
Qual destes é um commit de apoio (não dispara bump de versão)?