Kompatibilita a upgrade
Tato stránka shrnuje, co potřebujete vědět před upgradem nebo pokud spoléháte na přesný výstup: požadavky na běhové prostředí, které vydání TailwindCSS port sleduje, v čem se TailwindPHP záměrně liší od TailwindCSS a poznámky ke každému vydání. Úplnou historii najdete v CHANGELOG.md.
Požadavky
- PHP 8.2 nebo novější. Testovací sada běží na PHP 8.2, 8.3 a 8.4.
- Rozšíření
ctypeambstring. Kompilátor voláctype_*amb_chr(). Obě jsou součástí většiny sestavení PHP i oficiálních obrazů Docker, alecomposer.jsonje zatím neuvádí (#11), takže při jejich absenci se balíček nainstaluje, ale za běhu selže. - Volitelné:
pcntlumožňuje režimu--watchv CLI korektně se ukončit přiSIGINT/SIGTERM. Bez něj režim sledování stále funguje.
Nepoužívá se Node.js, FFI ani nativní binární soubory.
Které vydání TailwindCSS se sleduje
Vydání 1.7.0 sleduje TailwindCSS v4.3.3. Repozitář upstreamu je připnutý jako podmodul git v reference/tailwindcss, jeho testovací sady se extrahují z připnuté kopie a testy 4,427 se spouštějí při každém pushnutí (viz Výkon a testování). Portované pluginy vycházejí z @tailwindcss/typography a @tailwindcss/forms a pomocné nástroje pro třídy z clsx, tailwind-merge a CVA; všechny jsou připnuté stejným způsobem.
Známé rozdíly oproti TailwindCSS
Podrobnosti serializace
Generované CSS odpovídá referenčním testovacím sadám. Některé podrobnosti serializace se liší od výstupu TailwindCSS CLI, žádná z nich však nemění kaskádu:
- Předpony dodavatelů: tam, kde referenční výstup uvádí autorský řádek
-webkit-*i vygenerovaný řádek, TailwindPHP uvádí pouze jeden. - Převedené pseudo-elementy (
::file-selector-button,::-webkit-datetime-edit-*) zůstávají v původních seznamech selektorů, místo aby se rozdělily na jedno pravidlo pro každý pseudo-element. - Původní řetězce v jednoduchých uvozovkách zůstávají v jednoduchých uvozovkách (
'Segoe UI'), místo aby se normalizovaly na dvojité uvozovky. - Souběžně se vyskytující dlouhé vlastnosti se neslučují do zkráceného zápisu (vlastní výstup Tailwind jej nikdy nepotřebuje).
.p-0zachovávápadding: 0pxtam, kde referenční CLI uvádípadding: 0, protože extrahovaný testovací korpus vyžaduje podobu0px. Minifikátor ji zkracuje na0.
Co není zahrnuto
TailwindPHP je kompilátor CSS. Neobsahuje nástroje editoru z ekosystému Tailwind (IntelliSense, automatické doplňování, řazení tříd) ani zdrojové mapy, takže CLI nemá možnost --map.
Skenování obsahu
tw::generate() a TailwindCompiler::generate() čtou názvy tříd pouze z atributů class a className. U názvů tříd uložených v řetězcích PHP nebo JavaScript použijte tw::extractCandidatesFromStrings() nebo @source inline("…"). Cesty v @source se ignorují v API a CLI je zohledňuje jen částečně (viz níže).
Známé problémy v aktuálním vydání
| Oblast | Aktuální chování | Problém |
|---|---|---|
CLI @source |
Cesty a globy se neuplatňují; místo toho se skenuje adresář vstupního souboru a @source not nic nevylučuje. Viz Co skenuje CLI |
#8 |
CLI --optimize |
Minifikuje stejně jako --minify |
#9 |
| Dlouhé volby CLI | --input file.css (oddělené mezerou) se ignoruje; použijte --input=file.css nebo -i file.css |
#13 |
| Varianty pluginů | Varianty addVariant()/matchVariant() a modifikátory typografických elementů (prose-headings: …) se kompilují bez selektoru |
#10 |
Mixiny @apply |
@apply --my-mixin; se zahodí místo předání dál |
#12 |
| Referenční importy | Výstup je prázdný, pokud import referencí předchází importu utilit; @import "tailwindcss" reference nemá žádný účinek |
#14 |
Poznámky k upgradu
1.7.0
- Výstup se liší v bajtech oproti 1.6.x, ale funkčně zůstává ekvivalentní referenci TailwindCSS v4.3.3. Mezi viditelné změny patří:
- Násobitele mezer:
p-1vypíšepadding: var(--spacing)místo hodnotycalc()a násobitel0vypíše jako prostou nulovou délku. - Zlomky se převádějí na procenta:
w-1/2vypíšewidth: 50%. - Barvy: světlost
oklch()/oklab()se serializuje jako procento (oklch(62.3% .214 259.815)),whiteablackse zkracují na#fffa#000. - Pseudo-elementy CSS2 se serializují s jednou dvojtečkou (
:before,:after,:first-letter,:first-line). - Vnořená pravidla
@media/@supports/@containerse zplošťují na místě v pořadí zdroje, místo aby se přesunula na konec; deklarace se přeuspořádají podle lightningcss a zastíněné duplicitní deklarace se odstraní.
- Násobitele mezer:
- Mezipaměti klíčované podle výstupu se jednou zneplatní. Mezipaměť souborů
tw::generate()ve svém klíči neobsahuje verzi TailwindPHP, proto po upgradu spusťtetw::clearCache()(nebo adresář předaný jakocache). Mezipaměť stavu kompilátoru se zneplatní sama. - Nové:
@variantv autorském CSS, mixiny CSS v@apply,@media referencea@import "…" reference, plný engine--value()/--modifier()pro funkční@utility, přísnější ověřování názvů@utilitya volbapolyfillsvtw::compile().
1.6.1
- Nové: utilita
container(width: 100%plus jedenmax-widthpro každý breakpoint). - Složené proměnné
--tw-*(translate, scale, rotate, skew, filtry a další) se nyní registrují v@property, takže styly získají pravidla@propertya transformace jakotranslate-x-7se projeví v prohlížeči.
1.6.0
- Nové: trvalá mezipaměť stavu kompilátoru (
stateCacheFilevtw::compile()aTailwindCompiler,StateCache\compileCssCached()) a oddělené funkceparseCssState()/finalizeCssState()/compileParsed(). Stávající volání se chovají přesně jako dříve.
1.5.0
- Podtřídy
TailwindCompiler, které přepisujígenerate()nebocss(), musí přidat volitelný parametrbool $minify = false; PHP odmítá přepisy, které vynechají volitelný parametr rodičovské třídy. - Minifikovaný výstup vytváří serializér, takže minifikované bajty se mírně liší od 1.4.x (mezipaměti klíčované podle minifikovaného výstupu se jednou zneplatní).
- Nové:
generateExact()acssExact()pro CSS jednotlivých stránek z jediné dlouho žijící instance kompilátoru.