Pular para o conteúdo

TailwindPHP

TailwindPHP é uma implementação 1:1 de TailwindCSS 4.x para PHP. Analisa seu CSS, examina a marcação em busca de nomes de classes e gera o CSS das classes utilitárias que TailwindCSS v4.3.3 produz — tudo em PHP, sem Node.js e sem etapa de compilação.

  • PHP puro — distribuído como pacote Composer e executado em PHP 8.2+ com as extensões padrão ctype e mbstring. Sem exec, FFI ou ferramentas nativas de compilação.
  • Validado em relação a TailwindCSS — utilitários, variantes, diretivas e funções CSS acompanham TailwindCSS v4.3.3. A saída é verificada com os próprios conjuntos de testes de Tailwind, extraídos do código-fonte de TypeScript e executados novamente a cada envio (4,400+ testes). As diferenças conhecidas (alguns detalhes de serialização sem efeito na cascata, além de problemas em aberto) estão listadas em Compatibilidade e atualização.
  • Conjunto completo de recursos — todo o conjunto de utilitários TailwindCSS v4.3.3 (incluindo container, os utilitários de barra de rolagem, zoom-* e tab-*), todas as variantes (hover, focus, responsivo, modo escuro, consultas de contêiner e valores arbitrários) e toda a superfície de diretivas: @import, @theme, @apply, @utility, @variant, @custom-variant, @layer, @plugin e @source.
  • Tudo incluído — cn(), merge(), join() e variants() incluem implementações PHP de clsx, tailwind-merge e CVA, para que as bibliotecas auxiliares usadas em todo projeto Tailwind já estejam disponíveis.
  • Plugins — @tailwindcss/typography e @tailwindcss/forms foram totalmente implementados, e uma PHP de plugin API permite criar os seus próprios.

Por que TailwindPHP existe

TailwindCSS é escrito em TypeScript e executado em Node.js. Isso é um requisito incontornável para qualquer projeto PHP que queira Tailwind: um segundo ambiente de execução, uma instalação de npm e uma etapa de compilação no CI e em Docker. Para muitas aplicações PHP, esse é um atrito que prefeririam evitar.

TailwindPHP elimina essa necessidade. Seu código PHP compila Tailwind CSS diretamente, usando apenas a biblioteca padrão. Isso possibilita algumas coisas difíceis ou impossíveis com a cadeia de ferramentas JavaScript:

  • Frameworks WordPress e PHP — distribua temas e plugins com Tailwind sem pedir aos usuários que instalem Node.js ou executem uma compilação. Basta composer require e pronto. Veja TailwindWP, um plugin de exemplo WordPress que gera CSS para o editor de blocos com TailwindPHP.
  • CSS em tempo de execução — gere CSS de utilitários em tempo real a partir de dados do usuário, conteúdo do banco de dados ou variáveis de template, em vez de fazê-lo durante a compilação.
  • Implantação mais simples — sem Node.js em produção, etapa de compilação no CI ou npm na imagem Docker.

É a mesma ideia que scssphp levou para SCSS — o compilador completo em PHP.

O que ele faz

  • Compila o conjunto de utilitários TailwindCSS v4.3.3, as variantes e os valores arbitrários a partir dos nomes de classe encontrados no seu conteúdo.
  • Resolve toda a superfície de diretivas: @import (incluindo módulos virtuais como tailwindcss e tailwindcss/utilities, além de imports reference), @theme, @apply, @utility, @variant, @custom-variant, @layer, @plugin e @source.
  • Implementa as funções de CSS de Tailwind — theme(), --theme(), --spacing() e --alpha() — além da conversão de color-mix() para oklab() e das transformações de CSS delegadas a LightningCSS por TailwindCSS.
  • Resolve @import a partir do sistema de arquivos, com imports aninhados, deduplicação e resolvedores personalizados, ou a partir de strings CSS embutidas.
  • Inclui Preflight (a redefinição base de Tailwind), suporte a prefixos, fallbacks de @property, prefixos de fornecedores e elevação de keyframes.
  • Inclui cn(), merge(), join() e variants()/compose() para construção de nomes de classe, resolução de conflitos e variantes de componentes.
  • Inclui os plugins de tipografia e formulários, além de um plugin API (addUtilities, matchUtilities, addComponents, addVariant, theme, …) para plugins personalizados.
  • Fornece um CLI (bin/tailwindphp) com as opções de build @tailwindcss/cli, além de cache de saída baseado em arquivos, cache persistente do estado do compilador e um minificador CSS para produção.

O que não é

TailwindPHP é um compilador CSS, não uma cadeia de ferramentas para editores. Ele deixa de fora deliberadamente os recursos voltados ao IDE do ecossistema Tailwind — IntelliSense, preenchimento automático, ordenação de classes e mapas de origem — porque são recursos do editor, não fazem parte da geração de CSS. Tudo o que produz CSS está incluído; tudo o que dá suporte ao seu editor fica de fora.

Por onde começar

  • Primeiros passos — instale o pacote e gere sua primeira folha de estilos.
  • Uso — analise o conteúdo, personalize o tema e use as diretivas de Tailwind.
  • Utilitários de classe — cn(), merge(), join() e variants().
  • Plugins — tipografia, formulários e como criar os seus próprios.
  • API — toda a superfície de tw e a instância de TailwindCompiler.
  • CLI — bin/tailwindphp para builds baseados em arquivos e modo de observação.
  • Avançado — arquitetura, cache, desempenho e notas de compatibilidade.