Gå til indhold

Kompatibilitet og opgradering

Denne side samler det, du skal vide, før du opgraderer eller er afhængig af præcist output: runtimekravene, hvilken TailwindCSS-udgivelse porteringen følger, hvor TailwindPHP bevidst adskiller sig fra TailwindCSS, og noter til hver udgivelse. Hele historikken findes i CHANGELOG.md.

Krav

  • PHP 8.2 eller nyere. Testpakken køres på PHP 8.2, 8.3 og 8.4.
  • Udvidelserne ctype og mbstring. Compileren kalder ctype_* og mb_chr(). Begge følger med de fleste PHP-builds og de officielle Docker-images, men composer.json angiver dem endnu ikke (#11), så pakken installeres uden dem, men fejler ved kørsel.
  • Valgfrit: pcntl gør, at CLIs --watch-tilstand kan afslutte korrekt ved SIGINT/SIGTERM. Overvågningstilstanden virker stadig uden den.

Ingen Node.js, ingen FFI og ingen native binære filer indgår.

Hvilken TailwindCSS-udgivelse der følges

Udgivelse 1.7.0 følger TailwindCSS v4.3.3. Upstream-repositoriet er fastlåst som git-undermodul i reference/tailwindcss, dets testsuiter udtrækkes fra den fastlåste checkout, og 4,427-testene køres ved hvert push (se Ydeevne og test). De porterede plugins følger @tailwindcss/typography og @tailwindcss/forms, og klasseværktøjerne følger clsx, tailwind-merge og CVA, alle fastlåst på samme måde.

Kendte forskelle fra TailwindCSS

Serialiseringsdetaljer

Genereret CSS matcher referencetestsuiterne. Nogle få serialiseringsdetaljer adskiller sig fra det, TailwindCSS CLI udskriver, men ingen af dem ændrer kaskaden:

  • Leverandørpræfikser: Når referencen udsender både den forfattede -webkit-*-linje og en genereret linje, udsender TailwindPHP én linje.
  • Nedgraderede pseudo-elementer (::file-selector-button, ::-webkit-datetime-edit-*) forbliver i deres forfattede selektorlister i stedet for at blive opdelt i én regel pr. pseudo-element.
  • Forfattede strenge med enkelte anførselstegn forbliver med enkelte anførselstegn ('Segoe UI') i stedet for at blive normaliseret til dobbelte anførselstegn.
  • Longhand-egenskaber, der optræder sammen, kombineres ikke til en shorthand (Tailwinds eget output har aldrig brug for det).
  • .p-0 bevarer padding: 0px, hvor referencen CLI udsender padding: 0, fordi det udtrukne testkorpus fastlåser formen 0px. Minificeringen forkorter den til 0.

Ikke inkluderet

TailwindPHP er en CSS-compiler. Den udelader redigeringsværktøjerne fra Tailwind-økosystemet (IntelliSense, autofuldførelse, sortering af klasser) og kildekort, så CLI ikke har nogen --map-mulighed.

Indholdsscanning

tw::generate() og TailwindCompiler::generate() læser kun klassenavne fra attributterne class og className. Brug tw::extractCandidatesFromStrings() eller @source inline("…") til klassenavne i strengene PHP eller JavaScript. Stiformer af @source ignoreres af API og understøttes kun delvist af CLI (se nedenfor).

Kendte problemer i den aktuelle udgivelse

Område Adfærd i dag Problem
CLI @source Stier og globs anvendes ikke; inputfilens mappe scannes i stedet, og @source not udelukker intet. Se Hvad CLI scanner #8
CLI --optimize Minificerer ligesom --minify #9
Lange tilvalg i CLI --input file.css (adskilt med mellemrum) ignoreres; brug --input=file.css eller -i file.css #13
Pluginvarianter Varianterne addVariant()/matchVariant() og typografiens elementmodifikatorer (prose-headings: …) kompileres uden deres selektor #10
@apply-mixins @apply --my-mixin; droppes i stedet for at blive sendt videre #12
Referenceimporter Outputtet er tomt, når en referenceimport kommer før importen af værktøjer; @import "tailwindcss" reference har ingen effekt #14

Opgraderingsnoter

1.7.0

  • Outputtet ændres byte for byte sammenlignet med 1.6.x, men er funktionelt ækvivalent med referencen TailwindCSS v4.3.3. Blandt de synlige ændringer:
    • Mellemrumsmultiplikatorer: p-1 udsender padding: var(--spacing) i stedet for en calc(), og en multiplikator på 0 udsender en almindelig nul-længde.
    • Brøker foldes til procenter: w-1/2 udsender width: 50%.
    • Farver: lysstyrken i oklch()/oklab() serialiseres som en procent (oklch(62.3% .214 259.815)), white og black forkortes til #fff og #000.
    • CSS2-pseudo-elementer serialiseres med ét kolon (:before, :after, :first-letter, :first-line).
    • Indlejrede @media/@supports/@container-regler udflades på stedet i kildens rækkefølge i stedet for at blive flyttet til sidst; deklarationer omordnes, som lightningcss gør, og overskyggede dublerede deklarationer fjernes.
  • Caches med output som nøgle skal genopbygges én gang. Filcachen i tw::generate() medtager ikke TailwindPHP-versionen i sin nøgle, så kør tw::clearCache() (eller mappen, du angav som cache) efter opgradering. Compilerens tilstandscache invaliderer sig selv.
  • Nyt: @variant i forfatter-CSS, CSS-mixins i @apply, @media reference og @import "…" reference, hele --value()/--modifier()-motoren til funktionel @utility, strengere validering af @utility-navne og tilvalget polyfills i tw::compile().

1.6.1

  • Nyt: værktøjet container (width: 100% plus én max-width pr. breakpoint).
  • Sammensatte --tw-*-variabler (translate, scale, rotate, skew, filtre og andre) registreres nu med @property, så stylesheets får disse @property-regler, og transformationer som translate-x-7 træder i kraft i browseren.

1.6.0

  • Nyt: den vedvarende cache for compilerens tilstand (stateCacheFile på tw::compile() og TailwindCompiler, StateCache\compileCssCached()) samt de opdelte funktioner parseCssState()/finalizeCssState()/compileParsed(). Eksisterende kald fungerer præcis som før.

1.5.0

  • Underklasser af TailwindCompiler, der tilsidesætter generate() eller css(), skal tilføje den valgfrie parameter bool $minify = false; PHP afviser tilsidesættelser, der udelader en valgfri parameter fra forælderen.
  • Minificeret output kommer fra serializeren, så de minificerede bytes afviger en smule fra 1.4.x (caches med minificeret output som nøgle skal genopbygges én gang).
  • Nyt: generateExact() og cssExact() til CSS pr. side fra én langlivet compiler.