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șimbstring. Compilatorul apeleazăctype_*șimb_chr(). Ambele sunt incluse în majoritatea compilărilor PHP și în imaginile oficiale Docker, darcomposer.jsonîncă nu le declară (#11), astfel că o compilare fără ele instalează pachetul, dar eșuează la execuție. - Opțional:
pcntlpermite modului--watchal CLI să se oprească fără erori laSIGINT/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-0păstreazăpadding: 0pxacolo unde referința CLI emitepadding: 0, deoarece corpusul de teste extras fixează forma0px. Minificatorul o scurtează la0.
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-1emitepadding: var(--spacing)în loc de uncalc(), iar multiplicatorul0emite o lungime simplă de zero. - Fracțiile sunt convertite în procente:
w-1/2emitewidth: 50%. - Culori: luminozitatea
oklch()/oklab()este serializată ca procent (oklch(62.3% .214 259.815));whiteșiblacksunt scurtate la#fffși#000. - Pseudo-elementele CSS2 sunt serializate cu două puncte simple (
:before,:after,:first-letter,:first-line). - Regulile imbricate
@media/@supports/@containersunt 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.
- Multiplicatorii de spațiere:
- 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țitw::clearCache()(sau directorul transmis cacache) 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@utilityfuncționale, validarea mai strictă a numelor@utilityși opțiuneapolyfillsdintw::compile().
1.6.1
- Nou: utilitarul
container(width: 100%plus câte unmax-widthpentru 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 precumtranslate-x-7au efect în browser.
1.6.0
- Nou: cache-ul persistent pentru starea compilatorului (
stateCacheFilepetw::compile()șiTailwindCompiler,StateCache\compileCssCached()) și funcțiile separateparseCssState()/finalizeCssState()/compileParsed(). Apelurile existente funcționează exact ca înainte.
1.5.0
- Subclasele
TailwindCompilercare suprascriugenerate()saucss()trebuie să adauge parametrul opționalbool $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()șicssExact()pentru CSS per pagină, generate de un singur compilator cu durată lungă de viață.