Kompatibilitet & uppgradering
Den här sidan samlar det du behöver veta innan du uppgraderar eller förlitar dig på exakt utdata: körningskraven, vilken TailwindCSS-version portningen följer, på vilka sätt TailwindPHP medvetet skiljer sig från TailwindCSS och anteckningarna för varje version. Hela historiken finns i CHANGELOG.md.
Krav
- PHP 8.2 eller senare. Testsviten körs på PHP 8.2, 8.3 och 8.4.
- Tilläggen
ctypeochmbstring. Kompilatorn anroparctype_*ochmb_chr(). Båda ingår i de flesta PHP-byggen och i de officiella Docker-avbildningarna, mencomposer.jsondeklarerar dem ännu inte (#11), så ett bygge utan dem installerar paketet men misslyckas vid körning. - Valfritt:
pcntllåter CLI:s läge--watchavslutas korrekt vidSIGINT/SIGTERM. Utan det fungerar bevakningsläget fortfarande.
Ingen Node.js, ingen FFI och inga inbyggda binärfiler är inblandade.
Vilken TailwindCSS-version som följs
Version 1.7.0 följer TailwindCSS v4.3.3. Uppströmsarkivet är låst som en git-undermodul i reference/tailwindcss, dess testsviter hämtas från den låsta utcheckningen och 4,427-testerna körs vid varje push (se Prestanda och testning). De porterade plugin-programmen följer @tailwindcss/typography och @tailwindcss/forms, och klassverktygen följer clsx, tailwind-merge och CVA, alla låsta på samma sätt.
Kända skillnader från TailwindCSS
Serialiseringsdetaljer
Genererad CSS matchar referenstestsviterna. Några serialiseringsdetaljer skiljer sig från det som TailwindCSS CLI skriver ut, men ingen av skillnaderna påverkar kaskaden:
- Leverantörsprefix: när referensen skriver ut både den författade
-webkit-*-raden och en genererad rad skriver TailwindPHP ut en enda rad. - Nedgraderade pseudo-element (
::file-selector-button,::-webkit-datetime-edit-*) ligger kvar i sina författade selektorlistor i stället för att delas upp i en regel per pseudo-element. - Författade strängar med enkla citattecken förblir inom enkla citattecken (
'Segoe UI') i stället för att normaliseras till dubbla citattecken. - Samverkande longhand-egenskaper kombineras inte till en kortform (Tailwinds egen utdata behöver det aldrig).
.p-0behållerpadding: 0pxdär referensen CLI skriver utpadding: 0, eftersom den extraherade testkorpusen låser0px-formen. Minifieraren förkortar den till0.
Ingår inte
TailwindPHP är en CSS-kompilator. Den saknar redigeringsverktygen i Tailwind-ekosystemet (IntelliSense, automatisk komplettering, klassortering) och källkartor, så CLI har inget --map-alternativ.
Innehållsskanning
tw::generate() och TailwindCompiler::generate() läser klassnamn endast från attributen class och className. För klassnamn som finns i strängar i PHP eller JavaScript använder du tw::extractCandidatesFromStrings() eller @source inline("…"). Sökvägsformer av @source ignoreras av API och hanteras bara delvis av CLI (se nedan).
Kända problem i den aktuella versionen
| Område | Beteende i dag | Problem |
|---|---|---|
CLI @source |
Sökvägar och globbmönster tillämpas inte; i stället genomsöks indatans katalog, och @source not utesluter ingenting. Se Vad CLI genomsöker |
#8 |
CLI --optimize |
Minifierar, liksom --minify |
#9 |
| CLI långa alternativ | --input file.css (separerat med blanksteg) ignoreras; använd --input=file.css eller -i file.css |
#13 |
| Pluginvarianter | Varianterna addVariant()/matchVariant() och typografielementets modifierare (prose-headings: …) kompileras utan sin selektor |
#10 |
@apply-mixins |
@apply --my-mixin; tas bort i stället för att skickas vidare |
#12 |
| Referensimporter | Utdata är tom när en referensimport står före importen av verktygen; @import "tailwindcss" reference har ingen effekt |
#14 |
Uppgraderingsanteckningar
1.7.0
- Utdata ändras byte för byte jämfört med 1.6.x, men är funktionellt likvärdig med referensen TailwindCSS v4.3.3. Några synliga ändringar:
- Avståndsmultiplikatorer:
p-1skriver utpadding: var(--spacing)i stället för encalc(), och multiplikatorn0skriver ut en vanlig nolllängd. - Bråk omvandlas till procent:
w-1/2skriver utwidth: 50%. - Färger: ljusheten i
oklch()/oklab()serialiseras som procent (oklch(62.3% .214 259.815)),whiteochblackförkortas till#fffoch#000. - CSS2-pseudo-element serialiseras med ett kolon (
:before,:after,:first-letter,:first-line). - Kapslade
@media/@supports/@container-regler plattas ut på plats i källordning i stället för att flyttas sist; deklarationer ordnas om enligt lightningcss ordning, och överskuggade dubblettdeklarationer tas bort.
- Avståndsmultiplikatorer:
- Cachar med utdata som nyckel måste byggas om en gång. Filcachen i
tw::generate()inkluderar inte TailwindPHP-versionen i sin nyckel, så körtw::clearCache()(eller katalogen du skickade somcache) efter uppgradering. Cachen för kompilatorns tillstånd ogiltigförklarar sig själv. - Nytt:
@varianti författarens CSS, CSS-mixins i@apply,@media referenceoch@import "…" reference, den fullständiga motorn för--value()/--modifier()för funktionella@utility, striktare validering av@utility-namn och alternativetpolyfillsförtw::compile().
1.6.1
- Nytt: verktyget
container(width: 100%plus enmax-widthper brytpunkt). - Sammansatta
--tw-*-variabler (translate, scale, rotate, skew, filter och andra) registreras nu med@property, så formatmallar får de reglerna för@propertyoch transformeringar somtranslate-x-7börjar gälla i webbläsaren.
1.6.0
- Nytt: den beständiga cachen för kompilatortillstånd (
stateCacheFilepåtw::compile()ochTailwindCompiler,StateCache\compileCssCached()) samt de uppdelade funktionernaparseCssState()/finalizeCssState()/compileParsed(). Befintliga anrop fungerar precis som tidigare.
1.5.0
- Underklasser av
TailwindCompilersom åsidosättergenerate()ellercss()måste lägga till den valfria parameternbool $minify = false; PHP avvisar åsidosättningar där en föräldraklass valfri parameter saknas. - Minifierad utdata kommer från serialiseraren, så minifierade byte skiljer sig en aning från 1.4.x (cachar med minifierad utdata som nyckel måste byggas om en gång).
- Nytt:
generateExact()ochcssExact()för CSS per sida från en långlivad kompilator.