İçeriğe geç

Uyumluluk ve Yükseltme

Bu sayfa; yükseltme yapmadan veya çıktının tam eşleşmesine güvenmeden önce bilmeniz gerekenleri bir araya getirir: çalışma zamanı gereksinimleri, uyarlamanın hangi TailwindCSS sürümünü izlediği, TailwindPHP'in TailwindCSS'den bilerek ayrıldığı noktalar ve her sürüme ait notlar. Tüm geçmiş CHANGELOG.md içinde yer alır.

Gereksinimler

  • PHP 8.2 veya üzeri. Test paketi PHP 8.2, 8.3 ve 8.4 sürümlerinde çalışır.
  • ctype ve mbstring uzantıları. Derleyici, ctype_* ve mb_chr() işlevlerini çağırır. Bunlar çoğu PHP derlemesiyle ve resmî Docker imajlarıyla birlikte gelir; ancak composer.json henüz bunları bildirmez (#11). Bu nedenle bunlar olmadan yapılan bir derlemede paket kurulur, ancak çalışma zamanında başarısız olur.
  • İsteğe bağlı: pcntl. CLI'ün --watch modu, SIGINT/SIGTERM durumunda düzgün biçimde durabilir. Bu olmadan da izleme modu çalışır.

Node.js, FFI veya yerel ikili dosyalar kullanılmaz.

İzlenen TailwindCSS sürümü

1.7.0 sürümü TailwindCSS v4.3.3 sürümünü izler. Yukarı akış deposu, reference/tailwindcss içinde git alt modülü olarak belirli bir sürüme sabitlenmiştir; test paketleri bu sabitlenmiş çalışma ağacından çıkarılır ve 4,427 testleri her gönderimde çalışır (bkz. Performans ve test). Uyarlanan eklentiler @tailwindcss/typography ve @tailwindcss/forms'i, sınıf yardımcı programları ise her biri aynı şekilde sabitlenmiş olan clsx, tailwind-merge ve CVA'yı izler.

TailwindCSS ile bilinen farklar

Serileştirme ayrıntıları

Oluşturulan CSS, referans test paketleriyle eşleşir. TailwindCSS CLI çıktısındaki bazı serileştirme ayrıntıları farklıdır; ancak bunların hiçbiri basamaklandırmayı değiştirmez:

  • Üretici önekleri: başvurunun hem yazılmış -webkit-* satırını hem de oluşturulan bir satırı verdiği yerde TailwindPHP tek satır üretir.
  • Alt düzeye dönüştürülen sözde öğeler (::file-selector-button, ::-webkit-datetime-edit-*), her sözde öğe için ayrı kurallara bölünmek yerine yazıldıkları seçici listelerinde kalır.
  • Tek tırnakla yazılmış dizeler tek tırnaklı kalır ('Segoe UI'); çift tırnağa dönüştürülmez.
  • Birlikte bulunan uzun biçimli özellikler kısaltılmış bir özelliğe dönüştürülmez (Tailwind'in kendi çıktısı buna ihtiyaç duymaz).
  • .p-0, başvurunun CLI olarak padding: 0 ürettiği yerde padding: 0px biçimini korur; çünkü çıkarılan test derlemi 0px biçimini sabitler. Küçültücü bunu 0 olarak kısaltır.

Dahil olmayanlar

TailwindPHP, CSS derleyicisidir. Tailwind ekosisteminin düzenleyici araçlarını (IntelliSense, otomatik tamamlama, sınıf sıralama) ve kaynak haritalarını içermez; bu nedenle CLI için --map seçeneği yoktur.

İçerik tarama

tw::generate() ve TailwindCompiler::generate() sınıf adlarını yalnızca class ve className özniteliklerinden okur. PHP veya JavaScript dizelerinde tutulan sınıf adları için tw::extractCandidatesFromStrings() ya da @source inline("…") kullanın. @source yol biçimleri API tarafından yok sayılır, CLI tarafından ise yalnızca kısmen dikkate alınır (aşağıya bakın).

Mevcut sürümdeki bilinen sorunlar

Alan Mevcut davranış Sorun
CLI @source Yollar ve glob kalıpları uygulanmaz; bunun yerine girdi dosyasının dizini taranır ve @source not hiçbir şeyi hariç tutmaz. Bkz. CLI'in taradığı alanlar #8
CLI --optimize --minify gibi küçültme yapar #9
CLI uzun seçenekler --input file.css (boşlukla ayrılmış) yok sayılır; --input=file.css veya -i file.css kullanın #13
Eklenti varyantları addVariant()/matchVariant() varyantları ve tipografi öğesi değiştiricileri (prose-headings: …), seçicileri olmadan derlenir #10
@apply karışımları @apply --my-mixin; aktarılmak yerine kaldırılır #12
Başvuru içe aktarmaları Yardımcı sınıflar içe aktarımından önce bir başvuru içe aktarımı gelirse çıktı boş olur; @import "tailwindcss" reference etkisizdir #14

Yükseltme notları

1.7.0

  • Çıktı, 1.6.x ile bayt düzeyinde farklılık gösterir ancak işlevsel olarak eşdeğer olan TailwindCSS v4.3.3 referansıyla aynı kalır. Görülebilen değişikliklerden bazıları:
    • Boşluk çarpanları: p-1, calc() yerine padding: var(--spacing) üretir; 0 çarpanı ise birimsiz sıfır uzunluk üretir.
    • Kesirler yüzdeye dönüştürülür: w-1/2, width: 50% üretir.
    • Renkler: oklch()/oklab() açıklık değeri yüzde olarak serileştirilir (oklch(62.3% .214 259.815)); white ve black kısaltılarak #fff ve #000 olur.
    • CSS2 sözde öğeleri tek iki noktayla serileştirilir (:before, :after, :first-letter, :first-line).
    • İç içe @media/@supports/@container kuralları sona taşınmak yerine kaynak sırasına göre bulundukları yerde düzleştirilir; bildirimler lightningcss'in sıralamasına göre yeniden düzenlenir ve gölgelenen yinelenen bildirimler kaldırılır.
  • Çıktıya göre anahtarlanan önbellekler bir kez geçersiz kalır. tw::generate() dosya önbelleğinin anahtarında TailwindPHP sürümü bulunmaz; bu nedenle yükseltmeden sonra tw::clearCache() komutunu (veya cache olarak verdiğiniz dizini) çalıştırın. derleyici durumu önbelleği kendini geçersiz kılar.
  • Yeni: yazar CSS'da @variant, @apply'de CSS mixin'leri, @media reference ve @import "…" reference, işlevsel @utility için tam --value()/--modifier() altyapısı, daha sıkı @utility adı doğrulaması ve tw::compile() için polyfills seçeneği.

1.6.1

  • Yeni: container yardımcı programı (width: 100% ve her kesme noktası için bir max-width).
  • Birleştirilmiş --tw-* değişkenleri (translate, scale, rotate, skew, filtreler ve diğerleri) artık @property ile kaydediliyor; böylece stil sayfalarına bu @property kuralları ekleniyor ve translate-x-7 gibi dönüşümler tarayıcıda etkili oluyor.

1.6.0

  • Yeni: kalıcı derleyici durumu önbelleği (tw::compile() ve TailwindCompiler üzerinde stateCacheFile, StateCache\compileCssCached()) ve ayrıştırılmış parseCssState()/finalizeCssState()/compileParsed() işlevleri. Mevcut çağrılar tam olarak eskisi gibi çalışır.

1.5.0

  • TailwindCompiler alt sınıfları generate() veya css() yöntemlerini geçersiz kılıyorsa isteğe bağlı bool $minify = false parametresini eklemelidir; PHP, üst sınıfın isteğe bağlı parametresini kaldıran geçersiz kılmaları reddeder.
  • Küçültülmüş çıktı serileştiriciden gelir; bu nedenle küçültülmüş baytlar 1.4.x değerinden biraz farklıdır (küçültülmüş çıktıya göre anahtarlanan önbellekler bir kez geçersiz kalır).
  • Yeni: uzun ömürlü tek bir derleyiciden sayfa başına CSS için generateExact() ve cssExact().