Pular para conteúdo

ADR-0014: Formatação de Código — Prettier

Status

Accepted

Context and Problem Statement

Com mais de um dev por projeto, formatação inconsistente (aspas, vírgula final, ordem de classes Tailwind, largura de linha) gera diff de ruído nos PRs e discussão improdutiva. O ESLint lint regras de qualidade, mas não é formatador. Precisamos de formatação determinística e automática, igual pra todos os devs, sem depender de config de editor individual.

Decision Drivers

  • Zero diff de formatação entre devs
  • Automação: formata no pre-commit, verifica no CI — sem esforço manual
  • Ordenação consistente de classes Tailwind (ADR-0010)
  • Não conflitar com o ESLint

Considered Options

  • Prettier
  • ESLint com regras de estilo (@stylistic)
  • Biome (formatter + linter unificado)

Decision Outcome

Chosen option: Prettier + prettier-plugin-tailwindcss, porque é o padrão de fato no ecossistema, integra com eslint-config-prettier (desliga regras de formatação do ESLint pra não brigar) e o plugin oficial ordena classes Tailwind automaticamente. Biome foi descartado por ainda não cobrir todo o ecossistema de plugins que usamos; @stylistic foi descartado por misturar formatação com lint, o que queremos separar.

Positive Consequences

  • prettier --write no lint-staged (pre-commit) — código já entra formatado
  • prettier --check no CI — quebra se algo escapou
  • prettier-plugin-tailwindcss mantém ordem canônica das classes
  • ESLint foca só em qualidade/bugs, não em estilo

Negative Consequences

  • Mais uma devDependency + passo no pipeline
  • Adoção inicial gera um commit grande de reformatação do código existente

More Information

  • Aplica-se a atenvi-ui, atenvi-web, atenvi-web-admin, atenvi-bff, atenvi-app
  • Config mínima: .prettierrc com o plugin do Tailwind; defaults do Prettier no resto
  • Ordem no ESLint flat config: eslint-config-prettier por último
  • Sensor documentado em sensors/computational.md
  • Primeiro projeto a implementar: atenvi-web (2026-07-07)