Lewati ke konten

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 ctype dan mbstring. Compiler memanggil ctype_* dan mb_chr(). Keduanya disertakan dalam sebagian besar build PHP dan image resmi Docker, tetapi composer.json belum mendeklarasikannya (#11), jadi build tanpa ekstensi tersebut akan memasang paket tetapi gagal saat runtime.
  • Opsional: pcntl memungkinkan mode CLI --watch berhenti dengan bersih pada SIGINT/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-0 mempertahankan padding: 0px ketika referensi CLI menghasilkan padding: 0, karena korpus pengujian yang diekstrak mematok bentuk 0px. Minifier mempersingkatnya menjadi 0.

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-1 menghasilkan padding: var(--spacing) alih-alih calc(), dan pengali 0 menghasilkan panjang nol biasa.
    • Pecahan diubah menjadi persentase: w-1/2 menghasilkan width: 50%.
    • Warna: kecerahan oklch()/oklab() diserialisasi sebagai persentase (oklch(62.3% .214 259.815)), white dan black dipersingkat menjadi #fff dan #000.
    • Pseudo-element CSS2 diserialisasi dengan satu titik dua (:before, :after, :first-letter, :first-line).
    • Aturan @media/@supports/@container bersarang diratakan di tempatnya sesuai urutan sumber, alih-alih dipindahkan ke akhir; deklarasi diurutkan ulang sesuai urutan lightningcss; deklarasi duplikat yang tertimpa dihapus.
  • Cache berdasarkan keluaran akan perlu dibuat ulang satu kali. Kunci cache file milik tw::generate() tidak menyertakan versi TailwindPHP, jadi jalankan tw::clearCache() (atau direktori yang Anda berikan sebagai cache) setelah memperbarui. cache status compiler akan membatalkan cache secara otomatis.
  • Baru: @variant dalam CSS penulis, mixin CSS di @apply, @media reference dan @import "…" reference, mesin --value()/--modifier() lengkap untuk @utility fungsional, validasi nama @utility yang lebih ketat, dan opsi tw::compile() untuk polyfills.

1.6.1

  • Baru: utilitas container (width: 100% ditambah satu max-width untuk setiap breakpoint).
  • Variabel --tw-* gabungan (translate, scale, rotate, skew, filter, dan lainnya) kini terdaftar dengan @property, sehingga stylesheet memperoleh aturan @property tersebut dan transformasi seperti translate-x-7 berlaku di browser.

1.6.0

  • Baru: cache status compiler persisten (stateCacheFile pada tw::compile() dan TailwindCompiler, StateCache\compileCssCached()), serta fungsi parseCssState()/finalizeCssState()/compileParsed() yang dipisah. Pemanggilan yang sudah ada tetap berperilaku persis seperti sebelumnya.

1.5.0

  • Subkelas TailwindCompiler yang menimpa generate() atau css() harus menambahkan parameter opsional bool $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() dan cssExact() untuk CSS per halaman dari satu compiler berumur panjang.