TailwindPHP
Порт TailwindCSS 4.x для PHP. Генеруйте Tailwind утилітарні CSS у PHP без Node.js і збирання. Містить cn(), tailwind-merge, CVA, плагіни типографіки й форм та CLI.
composer require tailwindphp/tailwindphpОстанній випуск v1.7.0 MIT PHP 8.2+
use function TailwindPHP\merge;
merge('px-2 py-1 bg-red-500', 'px-4 bg-blue-500');
// => 'py-1 px-4 bg-blue-500'
// Conflict resolution is variant-aware
merge('hover:bg-red-500', 'hover:bg-blue-500');
// => 'hover:bg-blue-500'На практиці
Передайте розмітку й необов’язкову конфігурацію CSS одним викликом PHP, щоб отримати таблицю стилів.
Генеруйте CSS з PHP
tw::generate() сканує розмітку, знаходить назви класів і повертає лише CSS, потрібні цим класам. Другий аргумент приймає вхідну конфігурацію CSS, тож колір, визначений у @theme, стає утилітою.
cn() формує рядки класів і розв’язує конфлікти Tailwind, тож перемагає остання конфліктна утиліта.
use TailwindPHP\tw;
$css = tw::generate(
'<div class="bg-brand p-4">Hello</div>',
'@import "tailwindcss"; @theme { --color-brand: #3b82f6; }'
);
// .bg-brand now resolves to var(--color-brand)use function TailwindPHP\cn;
cn('px-2 py-1', 'px-4'); // 'py-1 px-4'
cn('btn', ['btn-primary' => true]); // 'btn btn-primary'Повністю на PHP
Без Node.js та етапу збирання. Працює на PHP 8.2+ зі стандартними розширеннями mbstring і ctype. Виконайте composer require — і готово.
Відповідає TailwindCSS v4.3.3
Порт Tailwind v4.3.3 з тими самими утилітами, варіантами й директивами. Відомі відмінності від Tailwind задокументовано.
4,400+ тестів
Результат перевіряється за власними наборами тестів TailwindCSS, витягнутими з вихідного коду TypeScript і повторно запущеними після кожного push.
Усі утиліти й варіанти
Повний набір утиліт і всі варіанти: hover, focus, адаптивність, темний режим, контейнерні запити й довільні значення.
Директиви CSS
@import, @theme, @apply, @utility, @custom-variant, @layer, @plugin і @source: розбір і визначення у PHP.
Генерація під час виконання
Генеруйте утиліти CSS на льоту з HTML, вмісту бази даних або змінних шаблону. Етап збирання не потрібен.
Усе необхідне в комплекті
cn(), merge(), join() і variants(): clsx, tailwind-merge і перенесений на PHP CVA — без додаткових пакетів.
Плагіни
@tailwindcss/typography і @tailwindcss/forms перенесено на PHP, а також є плагін PHPAPI для власних утиліт і компонентів.
CLI
bin/tailwindphp створює таблицю стилів із вхідного файла CSS за допомогою -i, -o, --watch і --minify.
Перегляд теми
Читайте сирі й обчислені значення властивостей, кольори, контрольні точки та відступи для будь-якого класу безпосередньо з PHP.
Кеш і мінімізатор
Вбудований мінімізатор CSS і файловий кеш із TTL пришвидшують повторні збирання та зменшують результат.
Фреймворки WordPress та PHP
Створюйте теми й плагіни на основі Tailwind без Node.js у стеку. TailwindPHP — це лише одна залежність Composer.
Чому TailwindPHP
Одне середовище виконання у виробничому середовищі
Проєкт PHP, у якому використовують Tailwind, зазвичай також потребує Node.js, інсталяції npm і етапу збирання в CI та Docker. Натомість TailwindPHP компілює CSS безпосередньо в процесі PHP.
CSS для вмісту, відомого під час виконання
Розмітку з бази даних, введені користувачем дані або змінну шаблону можна передати просто в tw::generate(), який поверне лише CSS, потрібні її класам.
Перевірено на закріпленому випуску Tailwind
Тестові випадки витягуються із закріпленого в репозиторії вихідного коду Tailwind і запускаються для результату PHP, тож будь-яка розбіжність зупиняє CI. Випуск 1.7.0 перевірено на Tailwind v4.3.3 за допомогою 4,427 тестів.
CSS для кожної сторінки з одного компілятора
Скомпілюйте тему один раз за допомогою tw::compile(), а потім викликайте generateExact() для кожної сторінки. Кожен виклик повертає результат, який дав би холодний tw::generate() цієї сторінки, без повторного розбору теми.
Порівняно з
Tailwind Labs пропонує власні способи створення Tailwind CSS. Ось чим відрізняється TailwindPHP.
| Інструмент | Переваги | Відмінність від TailwindPHP |
|---|---|---|
| Tailwind CLI (@tailwindcss/cli) | ПеревагиВласний інструмент командного рядка Tailwind, який встановлюється з npm. Він шукає назви класів у ваших файлах HTML, компонентах і шаблонах та записує відповідні стилі до статичного файла CSS. | Відмінність від TailwindPHPTailwindPHP компілює код у PHP без встановлення Node.js чи npm. Він прив’язаний до фіксованого випуску Tailwind (v4.3.3 у 1.7.0), а власний бенчмарк показує, що оригінал TypeScript швидше виконує низькорівневі операції. |
| Окремий виконуваний файл Tailwind CLI | ПеревагиTailwind CLI як окремий виконуваний файл для проєктів, які хочуть ним користуватися без встановлення Node.js. | Відмінність від TailwindPHPВиконуваний файл — це окремий бінарний файл, який запускається як етап збирання. TailwindPHP — це пакет Composer, який викликає ваш код PHP, тож він також може генерувати CSS під час запиту на основі вмісту бази даних або змінних шаблону. |
| Tailwind Play CDN | ПеревагиТег script запускає Tailwind у браузері, щоб спробувати його без етапу збирання. У документації Tailwind зазначено, що він призначений для розробки й не рекомендований для виробничого середовища. | Відмінність від TailwindPHPTailwindPHP теж не потребує етапу збирання, але генерує CSS на сервері в PHP і повертає його як рядок, наприклад для запису в таблицю стилів. |
Джерела, позначено
Запитання та відповіді
Короткі відповіді з документації TailwindPHP.
Випуск 1.7.0 відстежує Tailwind CSS v4.3.3. Набори тестів було повторно витягнуто для цієї версії.
Результат перевірено на прикладах, узятих із власних тестових файлів Tailwind. У журналі змін 1.7.0 зафіксовано кілька відмінностей у серіалізації: наприклад, .p-0 зберігає padding: 0px, тоді як еталонний CLI виводить padding: 0.
Ні. Плагіни PHP: плагіни типографіки та форм портовано, а власні можна написати на основі API плагінів PHP API і зареєструвати через registerPlugin(). Незареєстроване ім’я @plugin спричиняє помилку.
За результатами тестування продуктивності проєкту на PHP 8.4.5 та Apple M1, генерування повної сторінки тривало приблизно 14 ms. Для повторного вводу кеш файлів пропускає компіляцію, а довгоживучий компілятор із generateExact() повторно використовує розібрану тему.
Ні. IntelliSense, автодоповнення, сортування класів і вихідні карти навмисно не включено. TailwindPHP генерує лише CSS.
PHP 8.2 або новіша з розширеннями ctype і mbstring. composer.json оголошує версію PHP, а CI запускає набір тестів на PHP 8.2, 8.3 і 8.4.
Установіть пакет за допомогою Composer і скористайтеся посібником для початківців, щоб згенерувати першу таблицю стилів із PHP.