commitlint vs Commitizen: Convenções de Commit
O commitlint valida mensagens de commit contra regras; o Commitizen guia você interativamente a escrever conventional commits. Eles se complementam.
O commitlint verifica se as mensagens de commit seguem uma convenção (comumente Conventional Commits), reprovando o commit ou o CI quando não seguem. O Commitizen fornece um prompt interativo que monta uma mensagem de commit em conformidade para você, reduzindo a chance de erros logo de início. Eles resolvem pontas diferentes do mesmo objetivo: o Commitizen ajuda os autores a escrever mensagens corretas, o commitlint as impõe - muitos times usam os dois.
| commitlint | Commitizen | |
|---|---|---|
| Papel | Valida mensagens | Guia a escrita de mensagens |
| Quando roda | hook commit-msg / CI | No momento do commit (prompt) |
| Imposição | Sim (reprova commits ruins) | Não (auxilia) |
| Configuração | Config + regras | Adapter (ex.: cz) |
| Melhor para | Impor convenção | Escrever convenção |
No CI
O commitlint é a camada de imposição: rode-o em um hook commit-msg e novamente no CI nos commits de PR para que mensagens fora do padrão reprovem o build. O Commitizen ajuda localmente, mas não impõe nada sozinho. A configuração robusta é Commitizen (ou um template guiado) para escrever, mais commitlint no CI como portão.
Acelere
O lint de mensagens de commit é leve; faça cache das dependências para que o job comece rápido. A verificação roda em runners de CI; runners gerenciados mais rápidos mantêm a etapa de validação quase instantânea.
O veredito
Impor uma convenção de commit para que mensagens ruins falhem: commitlint, idealmente no CI. Ajudar os autores a escrever mensagens em conformidade de forma interativa: Commitizen. Eles são complementares, não concorrentes - use o Commitizen para escrever e o commitlint para impor.