Перейти до вмісту

TailwindPHP

TailwindPHP — це 1:1 порт TailwindCSS 4.x для PHP. Він аналізує ваш CSS, сканує розмітку на наявність назв класів і генерує утиліту CSS, яку створює TailwindCSS v4.3.3, — повністю на PHP, без Node.js і етапу збірки.

  • На чистому PHP — постачається як пакет Composer і працює на PHP 8.2+ зі стандартними розширеннями ctype і mbstring. Без exec, FFI та нативних засобів збірки.
  • Перевірено на відповідність TailwindCSS — утиліти, варіанти, директиви та функції CSS відповідають TailwindCSS v4.3.3. Результат перевіряється власними наборами тестів Tailwind, виділеними з вихідного коду TypeScript і повторно запусканими після кожного push (понад 4,400 тестів). Відомі відмінності (кілька нюансів серіалізації без впливу на каскад, а також відкриті проблеми) наведено в розділі Compatibility & upgrading.
  • Повний набір можливостей — повний набір утиліт TailwindCSS v4.3.3 (зокрема container, утиліти смуги прокручування, zoom-* і tab-*), усі варіанти (наведення, фокус, адаптивність, темний режим, контейнерні запити, довільні значення) та повний набір директив: @import, @theme, @apply, @utility, @variant, @custom-variant, @layer, @plugin і @source.
  • Усе необхідне вже в комплекті — cn(), merge(), join() і variants() містять вбудовані порти PHP clsx, tailwind-merge і CVA, тож супутні бібліотеки, до яких звертається кожен проєкт Tailwind, уже доступні.
  • Плагіни — @tailwindcss/typography і @tailwindcss/forms повністю перенесені, а PHP плагін API дає змогу створювати власні.

Навіщо потрібен TailwindPHP

TailwindCSS написано на TypeScript і працює на Node.js. Це обов’язкова вимога для будь-якого проєкту PHP, якому потрібен Tailwind: друге середовище виконання, встановлення npm і етап збірки в CI та Docker. Для багатьох застосунків PHP це зайві складнощі, яких хотілося б уникнути.

TailwindPHP усуває цю потребу. Ваш код PHP компілюється безпосередньо в Tailwind CSS, використовуючи лише стандартну бібліотеку. Це відкриває кілька можливостей, які складно або неможливо реалізувати за допомогою інструментарію JavaScript:

  • Фреймворки WordPress і PHP — створюйте теми й плагіни на базі Tailwind, не вимагаючи від користувачів встановлювати Node.js чи запускати збірку. Просто composer require — і готово. Див. TailwindWP — приклад плагіна WordPress, який генерує CSS редактора блоків за допомогою TailwindPHP.
  • CSS під час виконання — генеруйте утиліту CSS на льоту з даних користувача, вмісту бази даних або змінних шаблону, а не під час збірки.
  • Простіше розгортання — без Node.js у продакшені, етапу збірки в CI чи npm в образі Docker.

Це та сама ідея, яку scssphp переніс у SCSS: повний компілятор на PHP.

Що він робить

  • Компілює набір утиліт TailwindCSS v4.3.3, варіанти й довільні значення з назв класів, знайдених у вашому вмісті.
  • Обробляє повний набір директив: @import (зокрема віртуальні модулі, як-от tailwindcss і tailwindcss/utilities, та імпорти reference), @theme, @apply, @utility, @variant, @custom-variant, @layer, @plugin і @source.
  • Реалізує функції CSS Tailwind: theme(), --theme(), --spacing() і --alpha(), а також перетворення color-mix() → oklab() і трансформації CSS, які TailwindCSS делегує LightningCSS.
  • Обробляє @import із файлової системи з вкладеними імпортами, усуненням дублікатів і власними резолверами або з вбудованих рядків CSS.
  • Постачається з Preflight (базовим скиданням стилів Tailwind), підтримкою префіксів, резервними значеннями @property, префіксацією для браузерів і винесенням keyframes.
  • Містить cn(), merge(), join() і variants()/compose() для створення назв класів, розв’язання конфліктів і варіантів компонентів.
  • Містить плагіни типографіки й форм, а також API для плагінів (addUtilities, matchUtilities, addComponents, addVariant, theme, …).
  • Надає CLI (bin/tailwindphp) з параметрами збірки @tailwindcss/cli, а також кешування вихідних файлів, постійний кеш стану компілятора й мінімізатор CSS для продакшену.

Чим цей інструмент не є

TailwindPHP — компілятор CSS, а не інструментарій редактора. Він навмисно не містить компонентів екосистеми Tailwind для IDE: IntelliSense, автодоповнення, сортування класів і карт джерела, адже це можливості редактора, а не частина генерації CSS. До завдань компілятора належить усе, що створює CSS; усе, що забезпечує роботу редактора, — ні.

З чого почати

  • Getting Started — встановіть пакет і згенеруйте свою першу таблицю стилів.
  • Usage — скануйте вміст, налаштовуйте тему й використовуйте директиви Tailwind.
  • Class Utilities — cn(), merge(), join() і variants().
  • Plugins — типографіка, форми та створення власних плагінів.
  • API — повний набір можливостей tw і екземпляр TailwindCompiler.
  • CLI — bin/tailwindphp для збірок на основі файлів і режиму спостереження.
  • Advanced — архітектура, кешування, продуктивність і примітки щодо сумісності.