Hoppa till innehåll

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 ctype och mbstring. Kompilatorn anropar ctype_* och mb_chr(). Båda ingår i de flesta PHP-byggen och i de officiella Docker-avbildningarna, men composer.json deklarerar dem ännu inte (#11), så ett bygge utan dem installerar paketet men misslyckas vid körning.
  • Valfritt: pcntl låter CLI:s läge --watch avslutas korrekt vid SIGINT/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-0 behåller padding: 0px där referensen CLI skriver ut padding: 0, eftersom den extraherade testkorpusen låser 0px-formen. Minifieraren förkortar den till 0.

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-1 skriver ut padding: var(--spacing) i stället för en calc(), och multiplikatorn 0 skriver ut en vanlig nolllängd.
    • Bråk omvandlas till procent: w-1/2 skriver ut width: 50%.
    • Färger: ljusheten i oklch()/oklab() serialiseras som procent (oklch(62.3% .214 259.815)), white och black förkortas till #fff och #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.
  • 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ör tw::clearCache() (eller katalogen du skickade som cache) efter uppgradering. Cachen för kompilatorns tillstånd ogiltigförklarar sig själv.
  • Nytt: @variant i författarens CSS, CSS-mixins i @apply, @media reference och @import "…" reference, den fullständiga motorn för --value()/--modifier() för funktionella @utility, striktare validering av @utility-namn och alternativet polyfills för tw::compile().

1.6.1

  • Nytt: verktyget container (width: 100% plus en max-width per brytpunkt).
  • Sammansatta --tw-*-variabler (translate, scale, rotate, skew, filter och andra) registreras nu med @property, så formatmallar får de reglerna för @property och transformeringar som translate-x-7 börjar gälla i webbläsaren.

1.6.0

  • Nytt: den beständiga cachen för kompilatortillstånd (stateCacheFile på tw::compile() och TailwindCompiler, StateCache\compileCssCached()) samt de uppdelade funktionerna parseCssState()/finalizeCssState()/compileParsed(). Befintliga anrop fungerar precis som tidigare.

1.5.0

  • Underklasser av TailwindCompiler som åsidosätter generate() eller css() måste lägga till den valfria parametern bool $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() och cssExact() för CSS per sida från en långlivad kompilator.