|
| 1 | +# Migração para Tailwind CSS v4 |
| 2 | + |
| 3 | +O PR do Dependabot que bumpa `tailwindcss` de `3.4.1` para `4.3.3` **não pode ser mergeado direto** — testado localmente e o build quebra: |
| 4 | + |
| 5 | +``` |
| 6 | +Error: It looks like you're trying to use `tailwindcss` directly as a PostCSS plugin. |
| 7 | +The PostCSS plugin has moved to a separate package, so to continue using Tailwind CSS |
| 8 | +with PostCSS you'll need to install `@tailwindcss/postcss` and update your PostCSS |
| 9 | +configuration. |
| 10 | +``` |
| 11 | + |
| 12 | +Isso é esperado: no v4 o pacote `tailwindcss` deixou de funcionar como plugin do PostCSS. É uma migração, não um bump de versão. Este documento é o roteiro pra fazer isso com calma, fora do fluxo automático do Dependabot. |
| 13 | + |
| 14 | +## O que muda no v4 (relevante pra este projeto) |
| 15 | + |
| 16 | +- **PostCSS**: o plugin agora é `@tailwindcss/postcss`, um pacote separado. |
| 17 | +- **`autoprefixer`**: não é mais necessário — o v4 já faz vendor prefixing sozinho. Dá pra remover do `package.json` depois da migração. |
| 18 | +- **CSS de entrada** (`src/styles.css`): troca `@tailwind base; @tailwind components; @tailwind utilities;` por `@import "tailwindcss";`. `@apply` continua funcionando igual. |
| 19 | +- **`tailwind.config.js`**: não é mais auto-detectado. Pra manter o arquivo atual funcionando (inclui `darkMode: "class"`, usado em várias telas via classes `dark:`), é preciso referenciá-lo explicitamente no CSS com `@config`. |
| 20 | +- **Suporte de navegador**: v4 exige Safari 16.4+, Chrome 111+, Firefox 128+ (usa `@property` e `color-mix()`). Não deve ser um problema pro público do site, mas vale checar analytics antes de migrar. |
| 21 | +- **Angular + esbuild**: o builder do Angular CLI não faz a troca de plugin sozinho — precisa de um `.postcssrc.json` explícito na raiz apontando pro `@tailwindcss/postcss`. |
| 22 | + |
| 23 | +## Passo a passo manual |
| 24 | + |
| 25 | +1. Trocar a dependência e instalar o plugin novo: |
| 26 | + ```bash |
| 27 | + npm install tailwindcss@^4 @tailwindcss/postcss |
| 28 | + npm uninstall autoprefixer |
| 29 | + ``` |
| 30 | +2. Criar `.postcssrc.json` na raiz do projeto: |
| 31 | + ```json |
| 32 | + { |
| 33 | + "plugins": { |
| 34 | + "@tailwindcss/postcss": {} |
| 35 | + } |
| 36 | + } |
| 37 | + ``` |
| 38 | +3. Em `src/styles.css`, trocar: |
| 39 | + ```css |
| 40 | + @tailwind base; |
| 41 | + @tailwind components; |
| 42 | + @tailwind utilities; |
| 43 | + ``` |
| 44 | + por: |
| 45 | + ```css |
| 46 | + @config "../tailwind.config.js"; |
| 47 | + @import "tailwindcss"; |
| 48 | + ``` |
| 49 | + (o `@config` é só uma ponte pra não perder o `darkMode: "class"` e o `content` globbing que já existem em `tailwind.config.js`; migrar de vez pro formato CSS-first — `@theme`, `@custom-variant dark` — pode ficar pra uma segunda etapa, sem pressa.) |
| 50 | +4. Rodar `npm run build -- --configuration production` e `npm test` e comparar visualmente o site (claro e escuro) antes de abrir o PR. |
| 51 | +5. Alternativa mais rápida: rodar `npx @tailwindcss/upgrade`, que automatiza boa parte disso — só revisar o diff gerado antes de confiar. |
| 52 | + |
| 53 | +## Quando fazer isso |
| 54 | + |
| 55 | +Sem urgência — a v3.4.1 atual segue funcionando e recebendo patches normalmente. Fazer essa migração numa branch dedicada (`feat/tailwind-v4`), testar build + visual, e só então fechar o PR do Dependabot como superado por ela. |
0 commit comments