Aller au contenu

TailwindPHP

TailwindPHP est un port 1:1 de TailwindCSS 4.x vers PHP. Il analyse votre CSS, recherche les noms de classes dans votre balisage et génère le CSS utilitaire produit par TailwindCSS v4.3.3 — entièrement en PHP, sans Node.js ni étape de compilation.

  • PHP pur — fourni comme package Composer, il fonctionne sur PHP 8.2+ avec les extensions standard ctype et mbstring. Sans exec, FFI ni outils de compilation natifs.
  • Vérifié par rapport à TailwindCSS — les utilitaires, variantes, directives et fonctions CSS suivent TailwindCSS v4.3.3. Le résultat est vérifié avec les suites de tests propres à Tailwind, extraites du code source TypeScript et relancées à chaque push (plus de 4,400 tests). Les différences connues (quelques détails de sérialisation sans effet sur la cascade, ainsi que des problèmes ouverts) sont répertoriées dans Compatibilité et mise à niveau.
  • Toutes les fonctionnalités — l'ensemble complet des utilitaires TailwindCSS v4.3.3 (dont container, les utilitaires de barre de défilement, zoom-* et tab-*), toutes les variantes (survol, focus, réactivité, mode sombre, requêtes de conteneur, valeurs arbitraires) et toutes les directives : @import, @theme, @apply, @utility, @variant, @custom-variant, @layer, @plugin et @source.
  • Tout inclus — cn(), merge(), join() et variants() intègrent des ports PHP de clsx, tailwind-merge et CVA : les bibliothèques complémentaires utilisées par tous les projets Tailwind sont déjà incluses.
  • Plugins — @tailwindcss/typography et @tailwindcss/forms sont entièrement portés, et un PHP plugin API permet d'écrire les vôtres.

Pourquoi TailwindPHP existe

TailwindCSS est écrit en TypeScript et fonctionne sur Node.js. C'est une exigence incontournable pour tout projet PHP qui souhaite utiliser Tailwind : il faut un second environnement d'exécution, une installation npm et une étape de compilation dans la CI et Docker. Pour beaucoup d'applications PHP, cette complexité est peu souhaitable.

TailwindPHP élimine cette contrainte. Votre code PHP est compilé directement par Tailwind CSS, en utilisant uniquement la bibliothèque standard. Cela permet des usages difficiles, voire impossibles, avec la chaîne d'outils JavaScript :

  • Frameworks WordPress et PHP — distribuez des thèmes et plugins reposant sur Tailwind sans demander aux utilisateurs d'installer Node.js ni de lancer une compilation. Il suffit de composer require pour commencer. Voir TailwindWP, un plugin WordPress d'exemple qui génère CSS pour l'éditeur de blocs avec TailwindPHP.
  • CSS à l'exécution — générez à la volée des CSS utilitaires à partir de saisies utilisateur, de contenu de base de données ou de variables de template, plutôt qu'au moment de la compilation.
  • Déploiement simplifié — aucun Node.js en production, aucune étape de compilation dans la CI, aucun npm dans votre image Docker.

C'est le même principe que celui apporté par scssphp à SCSS : le compilateur complet, en PHP.

Fonctionnalités

  • Compile l’ensemble d’utilitaires TailwindCSS v4.3.3, les variantes et les valeurs arbitraires à partir des noms de classes trouvés dans votre contenu.
  • Résout toute la surface des directives : @import (y compris les modules virtuels comme tailwindcss et tailwindcss/utilities, ainsi que les imports reference), @theme, @apply, @utility, @variant, @custom-variant, @layer, @plugin et @source.
  • Implémente les fonctions CSS de Tailwind — theme(), --theme(), --spacing() et --alpha() — ainsi que la conversion color-mix() → oklab() et les transformations CSS déléguées à LightningCSS par TailwindCSS.
  • Résout @import depuis le système de fichiers, avec imports imbriqués, déduplication et résolveurs personnalisés, ou depuis des chaînes CSS intégrées.
  • Fournit Preflight (la réinitialisation de base de Tailwind), la prise en charge des préfixes, les solutions de repli @property, l’ajout de préfixes fournisseurs et le déplacement des keyframes.
  • Regroupe cn(), merge(), join() et variants()/compose() pour construire les noms de classes, résoudre les conflits et gérer les variantes de composants.
  • Inclut les plugins de typographie et de formulaires, ainsi qu’un API de plugin (addUtilities, matchUtilities, addComponents, addVariant, theme, …) pour les plugins personnalisés.
  • Fournit un CLI (bin/tailwindphp) avec les options de compilation @tailwindcss/cli, ainsi qu’une mise en cache des fichiers de sortie, un cache persistant de l’état du compilateur et un minificateur CSS pour la production.

Ce que ce n'est pas

TailwindPHP est un compilateur CSS, pas une chaîne d’outils d’édition. Il exclut volontairement les éléments de l’écosystème Tailwind destinés aux IDE — IntelliSense, la complétion automatique, le tri des classes et les cartes source — car ce sont des fonctions d’éditeur, et non des éléments de la génération de CSS. Tout ce qui produit CSS est inclus ; tout ce qui alimente votre éditeur ne l’est pas.

Par où commencer

  • Bien démarrer — installez le paquet et générez votre première feuille de style.
  • Utilisation — analysez le contenu, personnalisez le thème et utilisez les directives de Tailwind.
  • Utilitaires de classe — cn(), merge(), join() et variants().
  • Plugins — typographie, formulaires et création de vos propres plugins.
  • API — toute la surface tw et l’instance TailwindCompiler.
  • CLI — bin/tailwindphp pour les compilations basées sur des fichiers et le mode surveillance.
  • Avancé — architecture, mise en cache, performances et notes de compatibilité.