Skip to content

Commit 1e63a9a

Browse files
docs: add Tailwind CSS v4 migration plan
Dependabot's tailwindcss 3.4.1 -> 4.3.3 PR breaks the build (confirmed locally): the tailwindcss package no longer works as a direct PostCSS plugin in v4. Documents the concrete steps to migrate deliberately (new @tailwindcss/postcss plugin, .postcssrc.json, styles.css @import, bridging tailwind.config.js via @config) instead of merging the PR as-is.
1 parent 8b49731 commit 1e63a9a

1 file changed

Lines changed: 55 additions & 0 deletions

File tree

docs/tailwind-v4-migration.md

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
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

Comments
 (0)