Treci la conținut

Compatibilitate și actualizare

Această pagină reunește informațiile necesare înainte de a face o actualizare sau de a vă baza pe un rezultat exact: cerințele de execuție, versiunea TailwindCSS urmată de portare, diferențele deliberate ale TailwindPHP față de TailwindCSS și notele pentru fiecare versiune. Istoricul complet este în CHANGELOG.md.

Cerințe

  • PHP 8.2 sau o versiune ulterioară. Suita de teste rulează pe PHP 8.2, 8.3 și 8.4.
  • Extensiile ctype și mbstring. Compilatorul apelează ctype_* și mb_chr(). Ambele sunt incluse în majoritatea compilărilor PHP și în imaginile oficiale Docker, dar composer.json încă nu le declară (#11), astfel că o compilare fără ele instalează pachetul, dar eșuează la execuție.
  • Opțional: pcntl permite modului --watch al CLI să se oprească fără erori la SIGINT/SIGTERM. Fără acesta, modul de monitorizare funcționează în continuare.

Nu sunt implicate Node.js, FFI sau binare native.

Versiunea TailwindCSS urmărită

Versiunea 1.7.0 urmărește TailwindCSS v4.3.3. Depozitul din amonte este fixat ca submodul git în reference/tailwindcss, suitele sale de teste sunt extrase din acel checkout fixat, iar testele 4,427 rulează la fiecare push (consultați Performanță și testare). Pluginurile portate urmează @tailwindcss/typography și @tailwindcss/forms, iar utilitarele pentru clase urmează clsx, tailwind-merge și CVA, toate fixate în același mod.

Diferențe cunoscute față de TailwindCSS

Detalii despre serializare

CSS generat corespunde suitelor de teste de referință. Câteva detalii de serializare diferă de ceea ce afișează TailwindCSS CLI; niciuna dintre acestea nu modifică cascada:

  • Prefixe de vendor: când referința emite atât linia -webkit-* scrisă de autor, cât și una generată, TailwindPHP emite o singură linie.
  • Pseudo-elementele transformate pentru versiuni mai vechi (::file-selector-button, ::-webkit-datetime-edit-*) rămân în listele de selectori scrise de autor, în loc să fie separate în câte o regulă pentru fiecare pseudo-element.
  • Șirurile scrise de autor între apostrofuri simple rămân astfel ('Segoe UI'), în loc să fie normalizate la ghilimele duble.
  • Proprietățile longhand care apar împreună nu sunt combinate într-o proprietate shorthand (ieșirea proprie a lui Tailwind nu are nevoie de acest lucru).
  • .p-0 păstrează padding: 0px acolo unde referința CLI emite padding: 0, deoarece corpusul de teste extras fixează forma 0px. Minificatorul o scurtează la 0.

Ce nu este inclus

TailwindPHP este un compilator CSS. Nu include instrumentele editorului din ecosistemul Tailwind (IntelliSense, completare automată, sortarea claselor) sau hărțile sursă, așadar CLI nu are o opțiune --map.

Scanarea conținutului

tw::generate() și TailwindCompiler::generate() citesc numele claselor doar din atributele class și className. Pentru numele claselor aflate în șirurile PHP sau JavaScript, folosiți tw::extractCandidatesFromStrings() sau @source inline("…"). Formele de cale ale lui @source sunt ignorate de API și respectate doar parțial de CLI (vedeți mai jos).

Probleme cunoscute în versiunea actuală

Domeniu Comportamentul actual Problemă
CLI @source Căile și globurile nu se aplică; în schimb, este scanat directorul fișierului de intrare, iar @source not nu exclude nimic. Consultați Ce scanează CLI #8
CLI --optimize Minifică, la fel ca --minify #9
Opțiuni lungi de tip CLI --input file.css (separate prin spații) este ignorat; folosiți --input=file.css sau -i file.css #13
Variante de plugin Variantele addVariant()/matchVariant() și modificatorii elementelor tipografice (prose-headings: …) se compilează fără selectorul lor #10
Mixine @apply @apply --my-mixin; este eliminat în loc să fie transmis mai departe #12
Importuri de referință Rezultatul este gol când un import de referință precedă importul de utilitare; @import "tailwindcss" reference nu are niciun efect #14

Note de actualizare

1.7.0

  • Rezultatul se modifică la nivel de octeți față de 1.6.x, deși rămâne echivalent funcțional cu referința TailwindCSS v4.3.3. Printre modificările vizibile:
    • Multiplicatorii de spațiere: p-1 emite padding: var(--spacing) în loc de un calc(), iar multiplicatorul 0 emite o lungime simplă de zero.
    • Fracțiile sunt convertite în procente: w-1/2 emite width: 50%.
    • Culori: luminozitatea oklch()/oklab() este serializată ca procent (oklch(62.3% .214 259.815)); white și black sunt scurtate la #fff și #000.
    • Pseudo-elementele CSS2 sunt serializate cu două puncte simple (:before, :after, :first-letter, :first-line).
    • Regulile imbricate @media/@supports/@container sunt aplatizate pe loc, în ordinea sursei, în loc să fie mutate la final; declarațiile sunt reordonate după ordinea folosită de lightningcss, iar declarațiile duplicate mascate de altele sunt eliminate.
  • Cache-urile bazate pe rezultat se golesc o dată. Cheia cache-ului de fișiere din tw::generate() nu include versiunea TailwindPHP, așa că rulați tw::clearCache() (sau directorul transmis ca cache) după actualizare. cache-ul stării compilatorului se invalidează singur.
  • Nou: @variant în CSS scris de autor, mixine CSS în @apply, @media reference și @import "…" reference, motorul complet --value()/--modifier() pentru @utility funcționale, validarea mai strictă a numelor @utility și opțiunea polyfills din tw::compile().

1.6.1

  • Nou: utilitarul container (width: 100% plus câte un max-width pentru fiecare punct de întrerupere).
  • Variabilele --tw-* compuse (translate, scale, rotate, skew, filtre și altele) sunt acum înregistrate în @property, astfel încât foile de stil primesc aceste reguli @property, iar transformări precum translate-x-7 au efect în browser.

1.6.0

  • Nou: cache-ul persistent pentru starea compilatorului (stateCacheFile pe tw::compile() și TailwindCompiler, StateCache\compileCssCached()) și funcțiile separate parseCssState()/finalizeCssState()/compileParsed(). Apelurile existente funcționează exact ca înainte.

1.5.0

  • Subclasele TailwindCompiler care suprascriu generate() sau css() trebuie să adauge parametrul opțional bool $minify = false; PHP respinge suprascrierile care elimină un parametru opțional al clasei părinte.
  • Rezultatul minificat este produs de serializer, astfel că octeții minificați diferă puțin de 1.4.x (cache-urile bazate pe rezultatul minificat se golesc o dată).
  • Nou: generateExact() și cssExact() pentru CSS per pagină, generate de un singur compilator cu durată lungă de viață.