Ga naar de inhoud

Compatibiliteit en upgrades

Op deze pagina vindt u wat u moet weten voordat u upgradet of op exacte uitvoer vertrouwt: de runtimevereisten, welke release van TailwindCSS de port volgt, waarin TailwindPHP bewust afwijkt van TailwindCSS en de opmerkingen bij elke release. De volledige geschiedenis staat in CHANGELOG.md.

Vereisten

  • PHP 8.2 of hoger. De testsuite draait op PHP 8.2, 8.3 en 8.4.
  • De extensies ctype en mbstring. De compiler roept ctype_* en mb_chr() aan. Beide worden meegeleverd met de meeste builds van PHP en de officiële Docker-images, maar composer.json declareert ze nog niet (#11). Daardoor kan een build zonder deze extensies het pakket installeren, maar tijdens runtime mislukken.
  • Optioneel: pcntl laat de modus --watch van CLI netjes stoppen bij SIGINT/SIGTERM. Zonder deze extensie werkt de watchmodus nog steeds.

Er zijn geen Node.js, FFI of native binaire bestanden nodig.

Welke release van TailwindCSS wordt gevolgd

Release 1.7.0 volgt TailwindCSS v4.3.3. De upstream-repository is als git-submodule vastgezet in reference/tailwindcss, de testsuites zijn uit die vastgezette checkout gehaald en de 4,427-tests draaien bij elke push (zie Prestaties en testen). De geporteerde plugins volgen @tailwindcss/typography en @tailwindcss/forms; de klassehulpmiddelen volgen clsx, tailwind-merge en CVA, elk op dezelfde manier vastgezet.

Bekende verschillen met TailwindCSS

Serialisatiedetails

De gegenereerde CSS komt overeen met de referentietestsuites. Enkele serialisatiedetails verschillen van wat de TailwindCSS CLI afdrukt; geen daarvan verandert de cascade:

  • Leveranciersprefixen: waar de referentie zowel de geschreven -webkit-*-regel als een gegenereerde regel uitvoert, produceert TailwindPHP één regel.
  • Naar een lager niveau omgezette pseudo-elementen (::file-selector-button, ::-webkit-datetime-edit-*) blijven in hun geschreven selectorlijsten staan, in plaats van te worden opgesplitst in één regel per pseudo-element.
  • Geschreven tekenreeksen met enkele aanhalingstekens behouden die enkele aanhalingstekens ('Segoe UI') in plaats van te worden genormaliseerd naar dubbele aanhalingstekens.
  • Samen voorkomende longhands worden niet gecombineerd tot een shorthand (de eigen uitvoer van Tailwind heeft dat nooit nodig).
  • .p-0 behoudt padding: 0px waar de referentie-CLI padding: 0 uitvoert, omdat het geëxtraheerde testcorpus de vorm 0px vastlegt. De minifier verkort dit tot 0.

Niet inbegrepen

TailwindPHP is een CSS-compiler. De editorhulpmiddelen uit het Tailwind-ecosysteem ontbreken (IntelliSense, automatisch aanvullen en klassen sorteren), evenals bronkaarten. Daarom heeft de CLI geen optie --map.

Inhoud scannen

tw::generate() en TailwindCompiler::generate() lezen klassennamen alleen uit de attributen class en className. Gebruik voor klassennamen in tekenreeksen van PHP of JavaScript tw::extractCandidatesFromStrings() of @source inline("…"). Padvormen van @source worden genegeerd door de API en slechts gedeeltelijk ondersteund door de CLI (zie hieronder).

Bekende problemen in de huidige release

Gebied Huidig gedrag Probleem
CLI @source Paden en globs worden niet toegepast; in plaats daarvan wordt de map van het invoerbestand gescand en @source not sluit niets uit. Zie Wat de CLI scant #8
CLI --optimize Minificeert, net als --minify #9
Lange opties van CLI --input file.css (gescheiden door spaties) wordt genegeerd; gebruik --input=file.css of -i file.css #13
Pluginvarianten Varianten addVariant()/matchVariant() en de typografie-elementmodifiers (prose-headings: …) worden gecompileerd zonder hun selector #10
@apply-mixins @apply --my-mixin; wordt verwijderd in plaats van doorgegeven #12
Referentie-imports De uitvoer is leeg wanneer een referentie-import vóór de utilities-import staat; @import "tailwindcss" reference heeft geen effect #14

Upgrade-opmerkingen

1.7.0

  • De uitvoer verandert byte voor byte ten opzichte van 1.6.x, maar blijft functioneel gelijkwaardig aan de referentie van TailwindCSS v4.3.3. Zichtbare wijzigingen zijn onder andere:
    • Spatiëringsvermenigvuldigers: p-1 produceert padding: var(--spacing) in plaats van een calc(); bij een vermenigvuldiger van 0 wordt een kale nul-lengtewaarde geproduceerd.
    • Breuken worden percentages: w-1/2 produceert width: 50%.
    • Kleuren: de lichtheid van oklch()/oklab() wordt als percentage geserialiseerd (oklch(62.3% .214 259.815)); white en black worden verkort tot #fff en #000.
    • CSS2-pseudo-elementen worden met één dubbele punt geserialiseerd (:before, :after, :first-letter, :first-line).
    • Geneste regels van @media/@supports/@container worden ter plekke en in bronvolgorde afgevlakt in plaats van naar het einde te worden verplaatst; declaraties worden geordend zoals lightningcss ze ordent en overschaduwde dubbele declaraties worden verwijderd.
  • Cachesleutels op basis van uitvoer veranderen één keer. De bestandscache van tw::generate() neemt de versie van TailwindPHP niet mee in de sleutel. Voer daarom na een upgrade tw::clearCache() uit (of wis de map die u als cache hebt opgegeven). De cache voor compilerstatus wordt automatisch ongeldig.
  • Nieuw: @variant in de auteur-CSS, CSS-mixins in @apply, @media reference en @import "…" reference, de volledige --value()/--modifier()-engine voor functionele @utility, strengere validatie van @utility-namen en de optie polyfills van tw::compile().

1.6.1

  • Nieuw: het hulpprogramma container (width: 100% plus één max-width per breakpoint).
  • Samengestelde --tw-*-variabelen (vertalen, schalen, roteren, scheeftrekken, filters en meer) zijn nu geregistreerd bij @property, zodat stylesheets die @property-regels bevatten en transformaties zoals translate-x-7 in de browser werken.

1.6.0

  • Nieuw: de blijvende cache voor compilerstatus (stateCacheFile op tw::compile() en TailwindCompiler, StateCache\compileCssCached()), plus de opgesplitste functies parseCssState()/finalizeCssState()/compileParsed(). Bestaande aanroepen werken precies als voorheen.

1.5.0

  • Subklassen van TailwindCompiler die generate() of css() overschrijven, moeten de optionele parameter bool $minify = false toevoegen; PHP weigert overschrijvingen die een optionele parameter van een bovenliggende klasse weglaten.
  • Geminificeerde uitvoer komt van de serializer. De geminificeerde bytes wijken daardoor enigszins af van 1.4.x (cachesleutels op basis van geminificeerde uitvoer veranderen één keer).
  • Nieuw: generateExact() en cssExact() voor CSS per pagina vanuit één langlevende compiler.