Zum Inhalt springen

TailwindPHP

TailwindPHP ist eine 1:1-Portierung von TailwindCSS 4.x auf PHP. Sie parst dein CSS, durchsucht dein Markup nach Klassennamen und generiert die Utility-CSS, die TailwindCSS v4.3.3 erzeugt – vollständig in PHP, ohne Node.js und ohne Build-Schritt.

  • Reines PHP – wird als Composer-Paket ausgeliefert und läuft auf PHP 8.2+ mit den Standarderweiterungen ctype und mbstring. Kein exec, kein FFI, keine nativen Build-Werkzeuge.
  • Gegen TailwindCSS geprüft – Utilities, Varianten, Direktiven und CSS-Funktionen entsprechen TailwindCSS v4.3.3. Die Ausgabe wird anhand der eigenen Testsuiten von Tailwind geprüft, aus dem Quellcode von TypeScript extrahiert und bei jedem Push erneut ausgeführt (über 4.400 Tests). Bekannte Unterschiede – einige Serialisierungsdetails ohne Auswirkungen auf die Kaskade sowie offene Probleme – sind unter Kompatibilität und Upgrades aufgeführt.
  • Der gesamte Funktionsumfang – der vollständige Utility-Satz von TailwindCSS v4.3.3 (einschließlich container, der Scrollbar-Utilities, zoom-* und tab-*), alle Varianten (Hover, Fokus, responsives Verhalten, Dunkelmodus, Container-Abfragen, beliebige Werte) und sämtliche Direktiven: @import, @theme, @apply, @utility, @variant, @custom-variant, @layer, @plugin und @source.
  • Alles dabei – cn(), merge(), join() und variants() enthalten Portierungen von clsx, PHP, tailwind-merge und CVA. Die Begleitbibliotheken, zu denen jedes Tailwind-Projekt greift, sind also bereits enthalten.
  • Plugins – @tailwindcss/typography und @tailwindcss/forms sind vollständig portiert. Mit einer PHP-Plugin-API kannst du eigene Plugins schreiben.

Warum es TailwindPHP gibt

TailwindCSS ist in TypeScript geschrieben und läuft auf Node.js. Das ist eine feste Voraussetzung für jedes PHP-Projekt, das Tailwind verwenden möchte: eine zweite Laufzeitumgebung, eine zusätzliche npm-Installation und ein Build-Schritt in CI und Docker. Für viele PHP-Anwendungen ist das ein unnötiger Aufwand.

TailwindPHP beseitigt diesen Aufwand. Dein PHP-Code kompiliert Tailwind CSS direkt und verwendet dabei nur die Standardbibliothek. Dadurch werden einige Dinge möglich, die mit der JavaScript-Toolchain umständlich oder unmöglich sind:

  • WordPress- und PHP-Frameworks – Stelle Themes und Plugins mit Tailwind bereit, ohne Nutzer zur Installation von Node.js oder zum Ausführen eines Builds aufzufordern. Einfach composer require ausführen und loslegen. Siehe TailwindWP, ein Beispiel-WordPress-Plugin, das Block-Editor-CSS mit TailwindPHP generiert.
  • Laufzeit-CSS – Generiere Utility-CSS spontan aus Nutzereingaben, Datenbankinhalten oder Vorlagenvariablen statt zur Build-Zeit.
  • Einfachere Bereitstellung – kein Node.js in der Produktion, kein Build-Schritt in CI und kein npm in deinem Docker-Image.

Es ist dieselbe Idee, die scssphp für SCSS umgesetzt hat – der vollständige Compiler in PHP.

Funktionen

  • Kompiliert den Utility-Satz von TailwindCSS v4.3.3, Varianten und beliebige Werte aus Klassennamen in deinen Inhalten.
  • Löst alle Direktiven auf: @import (einschließlich virtueller Module wie tailwindcss und tailwindcss/utilities sowie reference-Imports), @theme, @apply, @utility, @variant, @custom-variant, @layer, @plugin und @source.
  • Implementiert die CSS-Funktionen von Tailwind: theme(), --theme(), --spacing() und --alpha() – sowie die Konvertierung von color-mix() zu oklab() und die CSS-Transformationen, die TailwindCSS an LightningCSS delegiert.
  • Löst @import mit verschachtelten Imports, Duplikaterkennung und benutzerdefinierten Resolvern aus dem Dateisystem auf oder verarbeitet eingebettete CSS-Zeichenfolgen.
  • Enthält Preflight (den Basis-Reset von Tailwind), Unterstützung für Präfixe, @property-Fallbacks, Herstellerpräfixe und das Verschieben von Keyframes.
  • Enthält cn(), merge(), join() und variants()/compose() zum Erstellen von Klassennamen, Auflösen von Konflikten und Definieren von Komponentenvarianten.
  • Enthält die Typografie- und Formular-Plugins sowie ein Plugin-API (addUtilities, matchUtilities, addComponents, addVariant, theme, …) für eigene Plugins.
  • Bietet ein CLI (bin/tailwindphp) mit den Build-Optionen von @tailwindcss/cli sowie dateibasiertes Ausgabe-Caching, einen persistenten Compilerstatus-Cache und einen CSS-Minifizierer für die Produktion.

Was es nicht ist

TailwindPHP ist ein CSS-Compiler, keine Editor-Toolchain. Die IDE-Funktionen des Tailwind-Ökosystems — IntelliSense, Autovervollständigung, Sortierung von Klassen und Source Maps — lässt es bewusst weg, da dies Editorfunktionen und kein Teil der CSS-Generierung sind. Alles, was CSS erzeugt, gehört zum Umfang; alles, was deinen Editor unterstützt, nicht.

Wo du anfangen kannst

  • Erste Schritte — installiere das Paket und generiere dein erstes Stylesheet.
  • Verwendung — Inhalte scannen, das Theme anpassen und Tailwinds Direktiven verwenden.
  • Klassen-Utilities — cn(), merge(), join() und variants().
  • Plugins — Typografie, Formulare und eigene Plugins.
  • API — der vollständige Umfang von tw und die TailwindCompiler-Instanz.
  • CLI — bin/tailwindphp für dateibasierte Builds und den Watch-Modus.
  • Erweitert — Architektur, Caching, Leistung und Hinweise zur Kompatibilität.