Μετάβαση στο περιεχόμενο

Συμβατότητα & αναβαθμίσεις

Αυτή η σελίδα συγκεντρώνει όσα χρειάζεται να γνωρίζετε πριν από αναβάθμιση ή πριν βασιστείτε σε ακριβή έξοδο: τις απαιτήσεις εκτέλεσης, ποια έκδοση TailwindCSS ακολουθεί η μεταφορά, πού το TailwindPHP διαφέρει σκόπιμα από το TailwindCSS και τις σημειώσεις για κάθε έκδοση. Το πλήρες ιστορικό βρίσκεται στο CHANGELOG.md.

Απαιτήσεις

  • PHP 8.2 ή νεότερο. Η σουίτα δοκιμών εκτελείται στις εκδόσεις PHP 8.2, 8.3 και 8.4.
  • Οι επεκτάσεις ctype και mbstring. Ο μεταγλωττιστής καλεί τα ctype_* και mb_chr(). Και τα δύο περιλαμβάνονται στις περισσότερες εκδόσεις PHP και στις επίσημες εικόνες Docker, αλλά το composer.json δεν τα δηλώνει ακόμη (#11), οπότε μια εγκατάσταση χωρίς αυτά ολοκληρώνεται αλλά αποτυγχάνει κατά την εκτέλεση.
  • Προαιρετικό: pcntl επιτρέπει στη λειτουργία --watch του CLI να τερματίζει ομαλά με SIGINT/SIGTERM. Χωρίς αυτό, η λειτουργία παρακολούθησης εξακολουθεί να λειτουργεί.

Δεν χρησιμοποιούνται Node.js, FFI ή εγγενή δυαδικά αρχεία.

Ποια έκδοση TailwindCSS ακολουθείται

Η έκδοση 1.7.0 ακολουθεί τα TailwindCSS v4.3.3. Το αποθετήριο upstream είναι συνδεδεμένο ως υπομονάδα git στο reference/tailwindcss, οι σουίτες δοκιμών του εξάγονται από αυτό το σταθερά επιλεγμένο checkout και οι δοκιμές 4,427 εκτελούνται σε κάθε push (δείτε Απόδοση & δοκιμές). Τα μεταφερμένα πρόσθετα ακολουθούν τα @tailwindcss/typography και @tailwindcss/forms, ενώ τα βοηθητικά στοιχεία κλάσεων ακολουθούν τα clsx, tailwind-merge και CVA, καθένα με τον ίδιο τρόπο σταθερά επιλεγμένο.

Γνωστές διαφορές από το TailwindCSS

Λεπτομέρειες σειριοποίησης

Το παραγόμενο CSS συμφωνεί με τις σουίτες δοκιμών αναφοράς. Μερικές λεπτομέρειες σειριοποίησης διαφέρουν από ό,τι εμφανίζει το TailwindCSS CLI, χωρίς να αλλάζουν την αλληλουχία εφαρμογής:

  • Προθέματα προμηθευτών: όταν η αναφορά παράγει τόσο την αρχική γραμμή -webkit-* όσο και μία παραγόμενη, το TailwindPHP παράγει μία γραμμή.
  • Τα ψευδοστοιχεία με υποβαθμισμένο επίπεδο (::file-selector-button, ::-webkit-datetime-edit-*) παραμένουν στις αρχικές λίστες επιλογέων τους αντί να διαχωρίζονται σε έναν κανόνα ανά ψευδοστοιχείο.
  • Οι αρχικές συμβολοσειρές με μονά εισαγωγικά παραμένουν έτσι ('Segoe UI') αντί να κανονικοποιούνται σε διπλά εισαγωγικά.
  • Συνυπάρχουσες ιδιότητες longhand δεν συνδυάζονται σε shorthand (η ίδια η έξοδος του Tailwind δεν το χρειάζεται ποτέ).
  • Το .p-0 διατηρεί το padding: 0px, ενώ η αναφορά CLI παράγει το padding: 0, επειδή το εξαγόμενο σώμα δοκιμών καθορίζει τη μορφή 0px. Ο ελαχιστοποιητής το συντομεύει σε 0.

Δεν περιλαμβάνεται

Το TailwindPHP είναι μεταγλωττιστής CSS. Δεν περιλαμβάνει τα εργαλεία επεξεργαστή του οικοσυστήματος Tailwind (IntelliSense, αυτόματη συμπλήρωση, ταξινόμηση κλάσεων) ούτε source maps, επομένως το CLI δεν διαθέτει επιλογή --map.

Σάρωση περιεχομένου

Τα tw::generate() και TailwindCompiler::generate() διαβάζουν ονόματα κλάσεων μόνο από τα γνωρίσματα class και className. Για ονόματα κλάσεων που βρίσκονται σε συμβολοσειρές PHP ή JavaScript, χρησιμοποιήστε τα tw::extractCandidatesFromStrings() ή @source inline("…"). Οι μορφές διαδρομής του @source αγνοούνται από το API και λαμβάνονται υπόψη μόνο εν μέρει από το CLI (δείτε παρακάτω).

Γνωστά ζητήματα στην τρέχουσα έκδοση

Περιοχή Τρέχουσα συμπεριφορά Ζήτημα
CLI @source Οι διαδρομές και τα μοτίβα glob δεν εφαρμόζονται· αντί γι' αυτά γίνεται σάρωση του καταλόγου του αρχείου εισόδου και το @source not δεν αποκλείει τίποτα. Δείτε Τι σαρώνει το CLI #8
CLI --optimize Εκτελεί ελαχιστοποίηση, όπως το --minify #9
Μεγάλες επιλογές CLI Το --input file.css (με διαχωρισμό διαστήματος) αγνοείται· χρησιμοποιήστε το --input=file.css ή το -i file.css #13
Παραλλαγές προσθέτων Οι παραλλαγές addVariant()/matchVariant() και οι τροποποιητές τυπογραφικών στοιχείων (prose-headings: …) μεταγλωττίζονται χωρίς τον επιλογέα τους #10
Μείγματα @apply Το @apply --my-mixin; απορρίπτεται αντί να προωθείται #12
Εισαγωγές αναφοράς Η έξοδος είναι κενή όταν μια εισαγωγή αναφοράς προηγείται της εισαγωγής utilities· το @import "tailwindcss" reference δεν έχει αποτέλεσμα #14

Σημειώσεις αναβάθμισης

1.7.0

  • Η έξοδος αλλάζει σε επίπεδο byte σε σύγκριση με το 1.6.x, ενώ παραμένει λειτουργικά ισοδύναμη με την αναφορά TailwindCSS v4.3.3. Ορισμένες ορατές αλλαγές:
    • Πολλαπλασιαστές διαστημάτων: το p-1 παράγει padding: var(--spacing) αντί για calc(), ενώ ο πολλαπλασιαστής 0 παράγει μήκος μηδέν χωρίς μονάδα.
    • Τα κλάσματα μετατρέπονται σε ποσοστά: το w-1/2 παράγει width: 50%.
    • Χρώματα: η φωτεινότητα των oklch()/oklab() σειριοποιείται ως ποσοστό (oklch(62.3% .214 259.815)), ενώ τα white και black συντομεύονται σε #fff και #000.
    • Τα ψευδοστοιχεία CSS2 σειριοποιούνται με μία άνω και κάτω τελεία (:before, :after, :first-letter, :first-line).
    • Οι ένθετοι κανόνες @media/@supports/@container ισοπεδώνονται επιτόπου, με τη σειρά του πηγαίου κώδικα, αντί να μεταφέρονται στο τέλος· οι δηλώσεις αναδιατάσσονται σύμφωνα με τη σειρά του lightningcss και αφαιρούνται οι επισκιασμένες διπλές δηλώσεις.
  • Οι προσωρινές μνήμες με κλειδί την έξοδο ακυρώνονται μία φορά. Η προσωρινή μνήμη αρχείων του tw::generate() δεν περιλαμβάνει την έκδοση TailwindPHP στο κλειδί της, οπότε μετά την αναβάθμιση εκτελέστε το tw::clearCache() (ή τον κατάλογο που περάσατε ως cache). Η προσωρινή μνήμη κατάστασης μεταγλωττιστή ακυρώνεται αυτόματα.
  • Νέο: @variant σε σύνταξη CSS, μείγματα CSS στο @apply, @media reference και @import "…" reference, πλήρης μηχανή --value()/--modifier() για λειτουργικά @utility, αυστηρότερη επικύρωση ονομάτων @utility και η επιλογή polyfills του tw::compile().

1.6.1

  • Νέο: το βοηθητικό container (width: 100% συν ένα max-width ανά σημείο διακοπής).
  • Οι συνδυασμένες μεταβλητές --tw-* (μετατόπιση, κλίμακα, περιστροφή, λοξή παραμόρφωση, φίλτρα και άλλα) δηλώνονται πλέον στο @property, ώστε τα φύλλα στυλ να αποκτούν αυτούς τους κανόνες @property και μετασχηματισμοί όπως το translate-x-7 να εφαρμόζονται στο πρόγραμμα περιήγησης.

1.6.0

  • Νέο: η μόνιμη προσωρινή μνήμη κατάστασης μεταγλωττιστή (stateCacheFile σε tw::compile() και TailwindCompiler, StateCache\compileCssCached()) και οι διακριτές συναρτήσεις parseCssState()/finalizeCssState()/compileParsed(). Οι υπάρχουσες κλήσεις λειτουργούν ακριβώς όπως πριν.

1.5.0

  • Οι υποκλάσεις του TailwindCompiler που παρακάμπτουν το generate() ή το css() πρέπει να προσθέσουν την προαιρετική παράμετρο bool $minify = false· το PHP απορρίπτει παρακάμψεις που παραλείπουν προαιρετική παράμετρο της γονικής κλάσης.
  • Η ελαχιστοποιημένη έξοδος προέρχεται από τον σειριοποιητή, επομένως τα ελαχιστοποιημένα byte διαφέρουν ελαφρώς από το 1.4.x (οι προσωρινές μνήμες με κλειδί την ελαχιστοποιημένη έξοδο ακυρώνονται μία φορά).
  • Νέο: τα generateExact() και cssExact() για CSS ανά σελίδα από έναν μεταγλωττιστή μεγάλης διάρκειας ζωής.