Перейти к содержимому

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 и повторно запускаемых при каждом обновлении (более 4,400 тестов). Известные различия (несколько деталей сериализации без влияния на каскад, а также открытые вопросы) перечислены в разделе Совместимость и обновление.
  • Полный набор функций — весь набор утилит TailwindCSS v4.3.3 (включая container, утилиты полосы прокрутки, zoom-* и tab-*), все варианты (hover, focus, адаптивность, темный режим, запросы контейнеров, произвольные значения) и полный набор директив: @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, добавлением вендорных префиксов и выносом ключевых кадров.
  • Включает cn(), merge(), join() и variants()/compose() для построения имен классов, разрешения конфликтов и вариантов компонентов.
  • Включает плагины типографики и форм, а также плагин API (addUtilities, matchUtilities, addComponents, addVariant, theme, …) для пользовательских плагинов.
  • Предоставляет CLI (bin/tailwindphp) с параметрами сборки @tailwindcss/cli, кэширование файлового вывода, постоянный кэш состояния компилятора и минификатор CSS для production-среды.

Чем merql не является

TailwindPHP — компилятор CSS, а не набор инструментов для редактора. В нем намеренно отсутствуют средства для IDE из экосистемы Tailwind — IntelliSense, автодополнение, сортировка классов и карты исходного кода, — поскольку это функции редактора, а не часть генерации CSS. Здесь есть всё, что создает CSS; функций для работы редактора нет.

С чего начать

  • Начало работы — установите пакет и создайте свою первую таблицу стилей.
  • Использование — сканируйте содержимое, настройте тему и используйте директивы Tailwind.
  • Утилитарные классы — cn(), merge(), join() и variants().
  • Плагины — типографика, формы и создание собственных плагинов.
  • API — полный набор возможностей tw и экземпляр TailwindCompiler.
  • CLI — bin/tailwindphp для сборки файлов и режима наблюдения.
  • Дополнительные темы — архитектура, кэширование, производительность и примечания о совместимости.