Guida introduttiva
Installazione
composer require tailwindphp/tailwindphp
TailwindPHP richiede PHP 8.2 o versioni successive, con le estensioni ctype e mbstring, e Composer. La maggior parte delle build PHP e delle immagini ufficiali Docker include entrambe le estensioni; composer.json non le elenca ancora (#11), quindi una build che ne è priva installa il pacchetto ma poi fallisce in fase di esecuzione. Non servono dipendenze Node.js, passaggi di compilazione o npm nell'immagine Docker o nella CI. Vi basta composer require e chiamare API.
Generate il vostro primo CSS
<?php
require __DIR__ . '/vendor/autoload.php';
use TailwindPHP\tw;
$css = tw::generate('<div class="flex items-center p-4 bg-blue-500">Hello</div>');
generate() analizza il markup, estrae i nomi delle classi che trova e genera solo CSS necessario per quelle classi, senza altro. Se non passate un secondo argomento, usa una configurazione @import "tailwindcss" predefinita, che include il tema, Preflight e il livello delle utility.
Personalizzare con una stringa CSS
Passate una stringa CSS di input come secondo argomento per aggiungere variabili @theme, regole personalizzate o direttive. I nuovi valori del tema diventano automaticamente utility:
use TailwindPHP\tw;
$css = tw::generate(
'<div class="bg-brand p-4">Hello</div>',
'@import "tailwindcss"; @theme { --color-brand: #3b82f6; }'
);
// .bg-brand now resolves to var(--color-brand)
Consultate Tema per l'elenco completo degli spazi dei nomi del tema.
Input array
Per qualcosa di più lungo di una singola riga, passate un array con le chiavi content e css. Qui potete definire componenti con @apply:
use TailwindPHP\tw;
$css = tw::generate([
'content' => '<div class="flex p-4 btn">Hello</div>',
'css' => '
@import "tailwindcss";
@theme {
--color-brand: #3b82f6;
--font-heading: "Inter", sans-serif;
}
.btn {
@apply px-4 py-2 rounded-lg bg-brand text-white;
}
',
]);
Il formato array accetta anche minify, importPaths, cache e cacheTtl. Consultate Utilizzo per i formati di input e Direttive per @apply, @theme, @utility e le altre.
Scrivere su un file
generate() restituisce una stringa, quindi scrivere un foglio di stile richiede una sola riga:
use TailwindPHP\tw;
file_put_contents('dist/styles.css', tw::generate([
'content' => file_get_contents('templates/page.html'),
'css' => '@import "tailwindcss";',
]));
Per compilazioni basate su file che analizzano una directory di template e per la modalità di osservazione, usate invece CLI. Accetta le opzioni di compilazione @tailwindcss/cli, ma oggi analizza i contenuti in modo diverso da Tailwind; la pagina CLI elenca cosa viene analizzato.
Minimizzare per la produzione
Passate minify => true per comprimere l'output durante la generazione, oppure chiamate tw::minify() su una stringa esistente:
use TailwindPHP\tw;
// Minify during generation
$css = tw::generate([
'content' => '<div class="flex p-4">Hello</div>',
'minify' => true,
]);
// Or minify separately
$css = tw::generate('<div class="flex p-4">Hello</div>');
$minified = tw::minify($css);
Il minificatore rimuove i commenti, riduce gli spazi, abbrevia i colori esadecimali (#ffffff in #fff) e rimuove le unità dai valori zero (0px in 0). Consultate Cache e minimizzazione per le opzioni di memorizzazione nella cache.
Passaggi successivi
- Utilizzo: flusso di generazione, analisi dei contenuti e formati di input.
- Utility per le classi:
cn(),merge(),join()evariants(). - Plugin: tipografia, moduli e plugin personalizzati.
- API: l'intera superficie
twe istanze del compilatore riutilizzabili. - CLI: compilazioni basate su file e con osservazione, senza Node.js.