Hai finito di lottare con file CSS sempre più lunghi, classi astruse e override furiosi quando lavori con Laravel e Blade? Il template engine è potente, ma senza un sistema di utility CSS rischi di passare più tempo a scrivere regole personalizzate che a costruire interfacce. Noi, di Meteora Web, abbiamo integrato Tailwind CSS in decine di progetti Laravel — da piattaforme proprietarie a e-commerce complessi — e abbiamo visto che il vero guadagno non sta solo nella velocità di sviluppo, ma nella manutenzione e nei costi di deploy. Questa guida ti porta passo passo dalla configurazione base all'ottimizzazione delle build di produzione.
Perché unire Tailwind CSS a Laravel Blade?
Blade ti permette di scrivere template espressivi con layout ereditati, sezioni, componenti. Tailwind ti dà un vocabolario di classi utility che si integrano perfettamente con quella struttura. Il risultato? Interfacce coerenti senza un solo foglio di stile personalizzato. In un progetto reale che abbiamo seguito — un gestionale per un negozio di abbigliamento — abbiamo ridotto il codice CSS del 70% passando da Bootstrap a Tailwind su Laravel. I componenti Blade diventano atomicamente chiari: ogni classe dice esattamente cosa fa.
Come installare Tailwind CSS in un progetto Laravel?
Laravel 9 e superiori usano Vite per il bundling, non più Laravel Mix. Il processo è cambiato, ma è più snello. Ecco i passi per un'installazione pulita.
Sponsored Protocol
1. Crea un nuovo progetto Laravel
composer create-project laravel/laravel mio-progetto
cd mio-progetto
2. Installa Tailwind CSS e i plugin necessari
npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init -p
Questo genera tailwind.config.js e postcss.config.js. Attento: Laravel include già postcss e autoprefixer in vite.config.js, ma installarli esplicitamente evita conflitti di versione.
3. Configura i percorsi dei template
Modifica tailwind.config.js per indicare a Tailwind dove cercare le classi utilizzate:
export default {
content: [
'./resources//*.blade.php',
'./resources//*.js',
'./resources/**/*.vue',
],
theme: {
extend: {},
},
plugins: [],
}
Il content array è fondamentale per il purge in produzione. Se dimentichi di includere le cartelle dei tuoi componenti, Tailwind eliminerà classi che usi.
4. Aggiungi le direttive Tailwind al tuo CSS
Nel file resources/css/app.css:
@tailwind base;
@tailwind components;
@tailwind utilities;
5. Configura Vite per processare il CSS
Assicurati che vite.config.js punti al file corretto:
import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
export default defineConfig({
plugins: [
laravel({
input: ['resources/css/app.css', 'resources/js/app.js'],
refresh: true,
}),
],
});
6. Lancia il build e verifica
npm run build
php artisan serve
Carica una vista Blade con qualche classe Tailwind (es. class="text-red-500 font-bold") e controlla che lo stile appaia. Nessuna compilazione manuale — Tailwind fa tutto in automatico.
Sponsored Protocol
Come configurare il file tailwind.config.js per un progetto Laravel?
La configurazione non si ferma al content. Ecco come sfruttarla per mantenere coerenza con il design system del progetto.
Estendere il tema con i colori del brand
theme: {
extend: {
colors: {
brand: {
50: '#f0f9ff',
100: '#e0f2fe',
// ... fino a 950
},
},
fontFamily: {
sans: ['Inter', 'sans-serif'],
},
},
},
In questo modo puoi scrivere bg-brand-500 nei Blade senza ricordare codici esadecimali. Noi lo facciamo da sempre: il cliente cambia palette? Un'unica modifica e tutto si aggiorna.
Aggiungere plugin utili
Per form, tipografia, forms eccessivamente verbosi: @tailwindcss/forms e @tailwindcss/typography sono i nostri standard.
npm install -D @tailwindcss/forms @tailwindcss/typography
Poi nel config:
plugins: [
require('@tailwindcss/forms'),
require('@tailwindcss/typography'),
],
Come usare Tailwind nei template Blade senza sporcare il markup?
L'obiezione più comune: "Troppe classi nel template rendono illeggibile il markup." La soluzione pratica è creare componenti Blade o utilizzare le direttive @apply e le classi personalizzate nel CSS. Noi preferiamo i componenti per la riusabilità e la manutenzione.
Sponsored Protocol
Creare un componente Button
@props(['variant' => 'primary', 'size' => 'md'])
Nel template usi . Pulito, leggibile, e tutta la logica di stile è incapsulata.
Quando usare @apply
Se hai una combinazione di classi che si ripete identica in più punti, estraila in una classe personalizzata:
/* resources/css/app.css */
@layer components {
.card-default {
@apply bg-white rounded-lg shadow-md p-6;
}
}
Poi nel Blade: class="card-default". Ma attenzione: abusare di @apply annulla il vantaggio delle utility — usalo solo per pattern veramente ripetitivi.
Come ottimizzare le build di produzione con Laravel e Vite?
Tailwind di default include solo le classi trovate nei file content. In fase di sviluppo, genera tutte le classi possibili? No, dalla versione 3.3 utilizza Just-in-Time (JIT) già in dev. Questo significa che anche in locale le build sono leggere. Ma per produzione ci sono accorgimenti extra.
Sponsored Protocol
Pulizia automatica con content array
Il content array che hai configurato è già la principale ottimizzazione. Tailwind scansiona i file e produce un CSS contenente solo le classi effettivamente usate. Se hai componenti Blade dinamicamente generati con stringhe di classi (es. class="{{ $classString }}"), Tailwind non può rilevarle. Soluzione: usa classi statiche o aggiungi un commento con tutte le possibili varianti.
{{-- Possible classes: bg-red-500 bg-blue-500 bg-green-500 --}}
Minificazione automatica in produzione
Vite con il plugin Laravel produce già asset minificati in npm run build. Nessuna configurazione extra. Se vuoi verificare, apri public/build/assets/app-*.css e vedrai il CSS compresso.
Abilitare la cache del purging
Tailwind 4? Non ancora stabile per Laravel. Con la 3.x, puoi forzare la rigenerazione della cache con:
php artisan view:clear && npm run build
In ambienti CI/CD, assicurati di eseguire npm ci invece di npm install per bloccare le versioni.
Quali errori evitare nella configurazione di Tailwind con Laravel?
Dopo aver visto decine di progetti, abbiamo raccolto i 3 errori più comuni:
- Dimenticare di includere le directory dei componenti Blade — se usi componenti Laravel in
resources/views/components, non basta./resources/**/*.blade.php? Sì, ma se li metti in una cartella diversa (es.app/View/Components), aggiorna ilcontent. - Usare classi dinamiche generate da PHP — Tailwind non esegue PHP; non può anticipare
class="bg-{{ $color }}-500"se$colorè variabile. Scrivi tutte le combinazioni possibili in un array e usa un component conmatch. - Installare vecchie versioni di Tailwind con Laravel Mix — Se inizi un progetto nuovo, usa Vite. Se devi migrare un progetto su Laravel Mix, è fattibile ma richiede attenzione ai conflitti di PostCSS. Ne abbiamo parlato nel nostro articolo su Tailwind CSS per UI moderne.
Cosa fare adesso?
Non ti serve altro per partire. Ecco le azioni concrete da eseguire subito:
Sponsored Protocol
- Apri il tuo progetto Laravel (o creane uno nuovo).
- Segui i passi di installazione sopra fino a vedere un colore Tailwind in una vista.
- Configura il
tailwind.config.jscon i colori del tuo brand e i pluginformsetypography. - Riscrivi un componente Blade esistente (es. un pulsante) usando utility class tailwind e componenti.
- Lancia
npm run builde verifica le dimensioni del CSS prodotto — ideale sotto i 50 KB per progetti medi. - Se incontri problemi, consulta la guida ufficiale di Tailwind per Laravel.
Noi, di Meteora Web, usiamo questa configurazione ogni giorno. Funziona, si mantiene, e i clienti notano la differenza in velocità del sito e consistenza del design. Se hai un progetto Laravel che vuoi ottimizzare con Tailwind, contattaci — sappiamo come farlo senza sprechi.