Kompatibilitas & Pembaruan
Halaman ini merangkum hal-hal yang perlu diketahui sebelum memperbarui atau mengandalkan keluaran yang persis: persyaratan runtime, rilis TailwindCSS yang diikuti port ini, perbedaan yang memang ada antara TailwindPHP dan TailwindCSS, serta catatan untuk setiap rilis. Riwayat lengkap tersedia di CHANGELOG.md.
Persyaratan
- PHP 8.2 atau lebih baru. Rangkaian pengujian berjalan pada PHP 8.2, 8.3, dan 8.4.
- Ekstensi
ctypedanmbstring. Compiler memanggilctype_*danmb_chr(). Keduanya disertakan dalam sebagian besar build PHP dan image resmi Docker, tetapicomposer.jsonbelum mendeklarasikannya (#11), jadi build tanpa ekstensi tersebut akan memasang paket tetapi gagal saat runtime. - Opsional:
pcntlmemungkinkan mode CLI--watchberhenti dengan bersih padaSIGINT/SIGTERM. Tanpanya, mode watch tetap berfungsi.
Tidak menggunakan Node.js, FFI, ataupun biner native.
Rilis TailwindCSS yang diikuti
Rilis 1.7.0 mengikuti TailwindCSS v4.3.3. Repositori upstream dipatok sebagai submodul git di reference/tailwindcss, rangkaian pengujiannya diambil dari checkout yang dipatok tersebut, dan pengujian 4,427 dijalankan pada setiap push (lihat Pengujian & performa). Plugin yang di-porting mengikuti @tailwindcss/typography dan @tailwindcss/forms, sedangkan utilitas kelas mengikuti clsx, tailwind-merge, dan CVA; semuanya dipatok dengan cara yang sama.
Perbedaan yang diketahui dari TailwindCSS
Detail serialisasi
CSS yang dihasilkan cocok dengan rangkaian pengujian referensi. Beberapa detail serialisasi berbeda dari hasil yang dicetak TailwindCSS CLI, tetapi tidak ada yang mengubah cascade:
- Prefiks vendor: jika referensi menghasilkan baris
-webkit-*yang ditulis dan baris hasil pembuatan, TailwindPHP menghasilkan satu baris. - Pseudo-element yang diturunkan levelnya (
::file-selector-button,::-webkit-datetime-edit-*) tetap berada dalam daftar selector yang ditulis, alih-alih dipecah menjadi satu aturan untuk setiap pseudo-element. - String berpetik tunggal yang ditulis tetap berpetik tunggal (
'Segoe UI'), alih-alih dinormalisasi menjadi petik ganda. - Properti longhand yang muncul bersamaan tidak digabung menjadi properti singkatan (keluaran Tailwind sendiri tidak memerlukannya).
.p-0mempertahankanpadding: 0pxketika referensi CLI menghasilkanpadding: 0, karena korpus pengujian yang diekstrak mematok bentuk0px. Minifier mempersingkatnya menjadi0.
Tidak disertakan
TailwindPHP adalah compiler CSS. Compiler ini tidak menyertakan alat editor dari ekosistem Tailwind (IntelliSense, pelengkapan otomatis, pengurutan kelas) maupun source map, sehingga CLI tidak memiliki opsi --map.
Pemindaian konten
tw::generate() dan TailwindCompiler::generate() hanya membaca nama kelas dari atribut class dan className. Untuk nama kelas yang tersimpan dalam string PHP atau JavaScript, gunakan tw::extractCandidatesFromStrings() atau @source inline("…"). Bentuk jalur @source diabaikan oleh API dan hanya sebagian didukung oleh CLI (lihat di bawah).
Masalah yang diketahui pada rilis saat ini
| Area | Perilaku saat ini | Masalah |
|---|---|---|
CLI @source |
Jalur dan glob tidak diterapkan; direktori file masukan yang dipindai, dan @source not tidak mengecualikan apa pun. Lihat Yang dipindai CLI |
#8 |
CLI --optimize |
Melakukan minifikasi, seperti --minify |
#9 |
| Opsi panjang CLI | --input file.css (dipisahkan spasi) diabaikan; gunakan --input=file.css atau -i file.css |
#13 |
| Varian plugin | Varian addVariant()/matchVariant() dan pengubah elemen tipografi (prose-headings: …) dikompilasi tanpa selector |
#10 |
Mixin @apply |
@apply --my-mixin; dihapus alih-alih diteruskan |
#12 |
| Impor referensi | Keluaran kosong jika impor referensi mendahului impor utilitas; @import "tailwindcss" reference tidak berpengaruh |
#14 |
Catatan pembaruan
1.7.0
- Keluaran berubah pada tingkat byte dibandingkan dengan 1.6.x, meski tetap setara secara fungsional dengan referensi TailwindCSS v4.3.3. Beberapa perubahan yang terlihat:
- Pengali spasi:
p-1menghasilkanpadding: var(--spacing)alih-alihcalc(), dan pengali0menghasilkan panjang nol biasa. - Pecahan diubah menjadi persentase:
w-1/2menghasilkanwidth: 50%. - Warna: kecerahan
oklch()/oklab()diserialisasi sebagai persentase (oklch(62.3% .214 259.815)),whitedanblackdipersingkat menjadi#fffdan#000. - Pseudo-element CSS2 diserialisasi dengan satu titik dua (
:before,:after,:first-letter,:first-line). - Aturan
@media/@supports/@containerbersarang diratakan di tempatnya sesuai urutan sumber, alih-alih dipindahkan ke akhir; deklarasi diurutkan ulang sesuai urutan lightningcss; deklarasi duplikat yang tertimpa dihapus.
- Pengali spasi:
- Cache berdasarkan keluaran akan perlu dibuat ulang satu kali. Kunci cache file milik
tw::generate()tidak menyertakan versi TailwindPHP, jadi jalankantw::clearCache()(atau direktori yang Anda berikan sebagaicache) setelah memperbarui. cache status compiler akan membatalkan cache secara otomatis. - Baru:
@variantdalam CSS penulis, mixin CSS di@apply,@media referencedan@import "…" reference, mesin--value()/--modifier()lengkap untuk@utilityfungsional, validasi nama@utilityyang lebih ketat, dan opsitw::compile()untukpolyfills.
1.6.1
- Baru: utilitas
container(width: 100%ditambah satumax-widthuntuk setiap breakpoint). - Variabel
--tw-*gabungan (translate, scale, rotate, skew, filter, dan lainnya) kini terdaftar dengan@property, sehingga stylesheet memperoleh aturan@propertytersebut dan transformasi sepertitranslate-x-7berlaku di browser.
1.6.0
- Baru: cache status compiler persisten (
stateCacheFilepadatw::compile()danTailwindCompiler,StateCache\compileCssCached()), serta fungsiparseCssState()/finalizeCssState()/compileParsed()yang dipisah. Pemanggilan yang sudah ada tetap berperilaku persis seperti sebelumnya.
1.5.0
- Subkelas
TailwindCompileryang menimpagenerate()ataucss()harus menambahkan parameter opsionalbool $minify = false; PHP menolak penimpaan yang menghilangkan parameter opsional milik kelas induk. - Keluaran yang diminifikasi berasal dari serializer, jadi byte hasil minifikasi sedikit berbeda dari 1.4.x (cache berdasarkan keluaran minifikasi perlu dibuat ulang satu kali).
- Baru:
generateExact()dancssExact()untuk CSS per halaman dari satu compiler berumur panjang.