TailwindPHP
Portare a TailwindCSS 4.x în PHP. Generează CSS pentru clasele utilitare Tailwind în PHP, fără Node.js și fără etapă de compilare. Include cn(), tailwind-merge, CVA, pluginurile de tipografie și formulare și un CLI.
composer require tailwindphp/tailwindphpCea mai recentă versiune v1.7.0 MIT PHP 8.2+
use function TailwindPHP\merge;
merge('px-2 py-1 bg-red-500', 'px-4 bg-blue-500');
// => 'py-1 px-4 bg-blue-500'
// Conflict resolution is variant-aware
merge('hover:bg-red-500', 'hover:bg-blue-500');
// => 'hover:bg-blue-500'În practică
Transmiteți marcajul și configurația opțională CSS într-un singur apel PHP și primiți o foaie de stil.
Generați CSS din PHP
tw::generate() scanează marcajul pentru nume de clase și returnează doar CSS de care au nevoie aceste clase. Al doilea argument acceptă intrarea CSS, astfel încât o culoare definită în @theme devine un utilitar.
cn() construiește șiruri de clase și rezolvă conflictele Tailwind, astfel încât ultimul utilitar conflictual are prioritate.
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)use function TailwindPHP\cn;
cn('px-2 py-1', 'px-4'); // 'py-1 px-4'
cn('btn', ['btn-primary' => true]); // 'btn btn-primary'Pur PHP
Fără Node.js și fără pas de compilare. Rulează pe PHP 8.2+ cu extensiile standard mbstring și ctype. Rulați composer require și gata.
Urmărește TailwindCSS v4.3.3
Un port al Tailwind v4.3.3, cu aceleași utilitare, variante și directive. Diferențele cunoscute față de Tailwind sunt documentate.
4,400+ teste
Rezultatul este verificat cu propriile suite de teste ale TailwindCSS, extrase din sursa TypeScript și rulate din nou la fiecare push.
Fiecare utilitar și variantă
Setul complet de utilitare și toate variantele: hover, focus, adaptiv, mod întunecat, interogări de container și valori arbitrare.
Directive CSS
@import, @theme, @apply, @utility, @custom-variant, @layer, @plugin și @source, analizate și rezolvate în PHP.
Generare în timpul execuției
Generați CSS de utilitare din mers, pe baza HTML, a conținutului bazei de date sau a variabilelor șablonului. Nu este necesar un pas de compilare.
Totul inclus
cn(), merge(), join() și variants(): clsx, tailwind-merge și CVA portate la PHP, fără pachete suplimentare.
Pluginuri
@tailwindcss/typography și @tailwindcss/forms portate la PHP, plus un PHP plugin API pentru propriile utilitare și componente.
CLI
bin/tailwindphp creează o foaie de stil dintr-un fișier de intrare CSS cu -i, -o, --watch și --minify.
Inspectați tema
Citiți direct din PHP valorile brute și calculate ale proprietăților, culorile, punctele de întrerupere și spațierile pentru orice clasă.
Memorare în cache și minificator
Un minificator CSS încorporat și o memorie cache de fișiere cu TTL mențin rapide compilările repetate și compact rezultatul.
Framework-uri WordPress și PHP
Livrați teme și pluginuri bazate pe Tailwind fără Node.js în stivă. TailwindPHP este o singură dependență Composer.
De ce TailwindPHP
Un singur runtime în producție
Un proiect PHP care adoptă Tailwind preia de obicei și Node.js, o instalare npm și un pas de compilare în CI și Docker. În schimb, TailwindPHP compilează CSS în procesul PHP.
CSS pentru conținut cunoscut la execuție
Marcajul provenit dintr-o bază de date, de la utilizator sau dintr-o variabilă de șablon poate fi transmis direct către tw::generate(), care returnează doar CSS necesare claselor sale.
Verificat cu o versiune Tailwind fixată
Cazurile de testare sunt extrase din sursa Tailwind fixată în depozit și rulate împotriva rezultatului PHP, astfel încât orice abatere oprește CI. Versiunea 1.7.0 a fost verificată cu Tailwind v4.3.3 și 4,427 teste.
CSS pentru fiecare pagină, dintr-un singur compilator
Compilați tema o singură dată cu tw::compile(), apoi apelați generateExact() pentru fiecare pagină. Fiecare apel returnează ceea ce ar produce o tw::generate() rece a paginii, fără a analiza din nou tema.
Comparativ cu
Tailwind Labs oferă propriile metode de construire a Tailwind CSS. Iată prin ce se deosebește TailwindPHP.
| Instrument | Potrivit pentru | Diferența față de TailwindPHP |
|---|---|---|
| Tailwind CLI (@tailwindcss/cli) | Potrivit pentruInstrumentul propriu de linie de comandă al Tailwind, instalat din npm. Scanează fișierele HTML, componentele și șabloanele pentru nume de clase și scrie stilurile corespunzătoare într-un fișier CSS static. | Diferența față de TailwindPHPTailwindPHP compilează în PHP fără instalare Node.js sau npm. Urmărește o versiune Tailwind fixă (v4.3.3 în 1.7.0), iar propriul său test comparativ arată că versiunea originală TypeScript execută mai rapid operațiile de nivel inferior. |
| Tailwind CLI independent | Potrivit pentruTailwind CLI ca executabil independent, pentru proiectele care vor să-l folosească fără a instala Node.js. | Diferența față de TailwindPHPExecutabilul este un binar separat, care rulează ca pas de compilare. TailwindPHP este un pachet Composer apelat de codul PHP, deci poate genera și CSS la momentul cererii, pe baza conținutului bazei de date sau a variabilelor șablonului. |
| Tailwind Play CDN | Potrivit pentruO etichetă script care rulează Tailwind în browser, pentru a-l încerca fără pas de compilare. Documentația Tailwind precizează că este conceput pentru dezvoltare și nu este destinat producției. | Diferența față de TailwindPHPNici TailwindPHP nu necesită un pas de compilare, dar generează CSS pe server în PHP și îl returnează ca șir, de exemplu pentru a-l scrie într-o foaie de stil. |
Întrebări și răspunsuri
Răspunsuri scurte din documentația TailwindPHP.
Versiunea 1.7.0 urmărește Tailwind CSS v4.3.3. Suitele sale de teste au fost extrase din nou pentru acea versiune.
Rezultatul este testat cu cazuri extrase din propriile fișiere de testare ale Tailwind. Jurnalul de modificări 1.7.0 consemnează câteva diferențe de serializare; de exemplu, .p-0 păstrează padding: 0px, în timp ce CLI de referință emite padding: 0.
Nu. Pluginurile sunt PHP: pluginurile de tipografie și formulare sunt portate, iar dvs. vă puteți scrie propriul plugin folosind PHP API și îl puteți înregistra cu registerPlugin(). Un nume @plugin neînregistrat generează o eroare.
În testul comparativ al proiectului, pe PHP 8.4.5 și un Apple M1, generarea unei pagini complete a durat aproximativ 14 ms per pagină. Pentru intrări repetate, memoria cache de fișiere sare peste compilare, iar un compilator cu durată lungă de viață și generateExact() reutilizează tema analizată.
Nu. IntelliSense, completarea automată, sortarea claselor și hărțile sursă sunt omise intenționat. TailwindPHP generează doar CSS.
PHP 8.2 sau o versiune ulterioară, cu extensiile ctype și mbstring. composer.json declară versiunea PHP, iar CI rulează suita de teste pe PHP 8.2, 8.3 și 8.4.
Instalați pachetul cu Composer și urmați ghidul de pornire pentru a genera prima foaie de stil din PHP.