Skip to main content

Husky & Commitlint

O projeto nx-suite-front-novo utiliza Husky integrado ao Commitlint para garantir que todos os commits sigam o padrão de convenções definido pelo time de frontend da Smart NX (SNX).
Essa validação automática mantém o histórico limpo, rastreável e semântico, facilitando o versionamento e a integração contínua (CI/CD).


Objetivo​

  • Impedir commits fora do padrão (git commit -m) que possam comprometer o histórico.
  • Garantir que mensagens sigam o formato Conventional Commits, com escopos válidos (NXS ou SUI).
  • Automatizar validações antes de commits e pushes.
  • Detectar alterações em dependências (package.json, yarn.lock, pnpm-lock.yaml) e rodar install automaticamente.

Funcionamento​

A integração é composta por três partes principais:

  1. Hooks do Husky — scripts executados automaticamente em ações do Git (como commit e push).
  2. Commitlint — valida as mensagens dos commits conforme as regras da equipe.
  3. Scripts auxiliares — validam commits locais e monitoram alterações em dependências.

Estrutura e Arquivos Envolvidos​

Caminho / ArquivoFunção
.husky/commit-msgValida o formato da mensagem de commit utilizando o Commitlint.
.husky/pre-pushExecuta o script validate-commits.ts para checar commits antes do push.
.husky/post-mergeDetecta alterações em dependências e executa yarn install automaticamente.
scripts/validate-commits.tsExecuta o Commitlint em cada commit local não enviado para o repositório remoto.
scripts/commitlint-rules/scope-format.tsDefine as regras para validação dos escopos (ex: NXS-123, SUI-456).
commitlint.config.tsArquivo principal de configuração do Commitlint (tipos aceitos, escopos, padrões).

Padrões de Commits​

Todos os commits devem seguir o padrão Conventional Commits, com o seguinte formato:


<type>(<scope>): <descrição>

Exemplo:


feat(NXS-123): adiciona integração com módulo de relatórios


Tipos de Commits Aceitos​

TipoDescriçãoExemplo
featNova funcionalidadefeat(NXS-123): adiciona integração com módulo de relatórios
fixCorreção de bugfix(SUI-98): corrige erro de carregamento
refactorAlteração de código sem mudança funcionalrefactor(NXS-456): simplifica lógica de renderização
choreAtualizações diversas, dependências ou configschore: atualiza dependências do projeto
docsAtualização de documentaçãodocs: adiciona guia de setup de ambiente
testAdição ou atualização de testestest(NXS-789): adiciona testes para o hook useAuth
styleAlterações visuais ou de formataçãostyle: ajusta espaçamento e indentação
perfMelhorias de performanceperf(NXS-321): otimiza re-renderização de componentes
ciAlterações no pipeline ou integração contínuaci: ajusta workflow de build e deploy
buildAlterações no processo de buildbuild: adiciona configuração de compressão gzip
revertReversão de commit anteriorrevert: volta commit abc123 por regressão
storyAtualização de componentes do Storybookstory(NXS-888): adiciona variação do componente Button

Exemplos de Commits Rejeitados​

CasoMotivo da RejeiçãoExemplo
❌ Escopo inválidoNão segue formato NXS-xxxx ou SUI-xxxxfeat(nx): novo componente
❌ Tipo inexistenteTipo fora da lista permitidaupdate(NXS-123): altera fluxo de login
❌ Ausência de tipo/escopoFalta tipo e escopo no commitcorrige bug de layout
❌ Escopos múltiplos incorretosSeparados incorretamentefix(NXS123,SUI456): ajusta labels
❌ Assunto vazioNão há descrição do commitfeat(NXS-222):

Regras de Validação​

As principais regras estão definidas em:

  • commitlint.config.ts — Define os tipos válidos (feat, fix, docs, etc.), tamanho máximo do cabeçalho e formatação do texto.
  • scope-format.ts — Regra customizada que valida o formato do escopo (ex: NXS-123, SUI-456), permitindo múltiplos separados por vírgula.
  • validate-commits.ts — Executa a validação de commits locais antes do push e bloqueia o envio se houver erros.

💡 Mensagens fora do padrão bloqueiam automaticamente o commit ou o push, garantindo rastreabilidade entre código e tickets JIRA.


Boas Práticas​

  • Prefira commits pequenos e objetivos.
  • Sempre relacione a mudança a um ticket JIRA (ex: NXS-123).
  • Evite commits genéricos como “fixes” ou “ajustes”.
  • Use git commit --amend ou git rebase -i para corrigir mensagens inválidas.
  • Não utilize --no-verify sem aprovação do time técnico.

Histórico de Versões​

DataVersãoAutor / RevisorAlterações
29/10/2025v1.0.0@Matheus TellesCriação inicial e estrutura base do documento