跳转到正文

TailwindPHP

TailwindCSS 4.x 的 PHP 移植版。在 PHP 中生成 Tailwind 工具类 CSS,无需 Node.js,也无需构建步骤。内置 cn()、tailwind-merge、CVA、排版和表单插件,以及一个 CLI。

终端
composer require tailwindphp/tailwindphp

最新版本 v1.7.0 MIT PHP 8.2+

实践应用

将标记和可选的输入 CSS 传入一次 PHP 调用,即可获得样式表。

根据 PHP 生成 CSS

tw::generate() 会扫描标记中的类名,并只返回这些类所需的 CSS。第二个参数接受输入 CSS,因此在 @theme 中定义的颜色也会成为实用工具。

cn() 会构建类名字符串并解析 Tailwind 冲突,因此最后出现的冲突实用工具会生效。

PHP
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)

纯 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 中解析和求值。

运行时生成

根据 HTML、数据库内容或模板变量即时生成实用工具 CSS。无需构建步骤。

开箱即用

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

在生产环境中使用单一运行时

采用 Tailwind 的 PHP 项目通常还需要 Node.js、安装 npm,并在 CI 和 Docker 中执行构建步骤。TailwindPHP 则会在 PHP 进程内编译 CSS。

适用于运行时已知的内容的 CSS

来自数据库、用户输入或模板变量的标记都可以直接传给 tw::generate(),它只会返回这些类所需的 CSS。

根据固定版本的 Tailwind 验证

测试用例从仓库中固定版本的 Tailwind 源码提取,并针对 PHP 输出运行,因此版本偏差会导致 CI 失败。1.7.0 版本已通过 4,427 项测试,根据 Tailwind v4.3.3 进行了验证。

通过一个编译器生成每页的 CSS

使用 tw::compile() 编译一次主题,然后为每个页面调用 generateExact()。每次调用都会返回该页面在冷启动 tw::generate() 时的生成结果,无需再次解析主题。

对比

Tailwind Labs 提供了自有的 Tailwind CSS 构建方式。以下是 TailwindPHP 的不同之处。

TailwindPHP 与其他工具的对比
Tailwind CLI (@tailwindcss/cli) 擅长领域Tailwind 自带的命令行工具,可从 npm 安装。它会扫描你的 HTML 文件、组件和模板中的类名,并将匹配的样式写入静态 CSS 文件。 与 TailwindPHP 的区别TailwindPHP 可在 PHP 内编译,无需安装 Node.js 或 npm。它会跟踪固定的 Tailwind 版本(1.7.0 中的 v4.3.3),并且它自己的基准测试显示,上游 TypeScript 执行底层操作的速度更快。
独立的 Tailwind CLI 擅长领域Tailwind CLI 是独立的可执行文件,适合希望使用它但不安装 Node.js 的项目。 与 TailwindPHP 的区别该可执行文件是一个独立二进制文件,作为构建步骤运行。TailwindPHP 是一个由你的 PHP 代码调用的 Composer 软件包,因此也能在请求时根据数据库内容或模板变量生成 CSS。
Tailwind Play CDN 擅长领域通过脚本标签在浏览器中运行 Tailwind,无需构建步骤即可试用。Tailwind 的文档说明,它专为开发设计,不适用于生产环境。 与 TailwindPHP 的区别TailwindPHP 同样无需构建步骤,但它会在服务器上用 PHP 生成 CSS 并以字符串形式返回,例如可将其写入样式表。

问答

来自 TailwindPHP 文档的简明解答。

使用 Composer 安装软件包,并按照入门指南根据 PHP 生成你的第一个样式表。