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 и запускаются при каждом отправлении изменений.
Все утилиты и варианты
Полный набор утилит и все варианты: наведение, фокус, адаптивность, темный режим, контейнерные запросы и произвольные значения.
Директивы CSS
@import, @theme, @apply, @utility, @custom-variant, @layer, @plugin и @source разбираются и разрешаются в PHP.
Генерация во время выполнения
Генерируйте утилитарные CSS на лету из HTML, содержимого базы данных или переменных шаблона. Этап сборки не требуется.
Все необходимое включено
cn(), merge(), join() и variants(): clsx, tailwind-merge и порт CVA для PHP без дополнительных пакетов.
Плагины
@tailwindcss/typography и @tailwindcss/forms портированы на PHP; также доступен плагин PHP API для собственных утилит и компонентов.
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: плагины типографики и форм портированы, а собственные можно написать с помощью PHP плагина API и зарегистрировать через registerPlugin(). Незарегистрированное имя @plugin вызовет ошибку.
В бенчмарке проекта на PHP 8.4.5 и Apple M1 генерация полной страницы занимала около 14 мс. Для повторных запросов файловый кэш пропускает компиляцию, а долгоживущий компилятор с generateExact() повторно использует разобранную тему.
Нет. IntelliSense, автодополнение, сортировка классов и карты исходного кода намеренно не включены. TailwindPHP генерирует только CSS.
PHP 8.2 или новее с расширениями ctype и mbstring. composer.json указывает версию PHP, а CI запускает набор тестов на PHP 8.2, 8.3 и 8.4.
Установите пакет с помощью Composer и следуйте руководству для начинающих, чтобы создать первую таблицу стилей из PHP.