Symfony 的 Tailwind CSS!
注意
此扩展包尚不支持 Tailwind CSS 4.0。
此扩展包使您可以轻松地将 Tailwind CSS 与 Symfony 的 AssetMapper 组件 一起使用(无需 Node.js!)。
- 自动下载正确的 独立 Tailwind CSS 二进制文件;
- 添加一个
tailwind:build
命令来构建和监视更改; - 透明地替换已编译的 CSS。
注意
想要将 Tailwind CSS 与 WebpackEncore 一起使用?请查看 Tailwind + Symfony 文档。
安装
安装扩展包并使用两个命令初始化您的应用
1 2
$ composer require symfonycasts/tailwind-bundle
$ php bin/console tailwind:init
完成!这将创建一个 tailwind.config.js
文件,并确保您的 assets/styles/app.css
包含 Tailwind 指令。
用法
要使用 Tailwind CSS 文件,首先在 base.html.twig
中包含输入文件(默认情况下为 assets/styles/app.css
)。您很可能已经有了这个
1 2 3 4 5
{# templates/base.html.twig #}
{% block stylesheets %}
<link rel="stylesheet" href="{{ asset('styles/app.css') }}">
{% endblock %}
此扩展包的工作原理是自动将 styles/app.css
的内容替换为已编译的 CSS。为了使其正常工作,您需要运行 tailwind:build
命令
1
$ php bin/console tailwind:build --watch
就是这样!这将监视对您的 assets/styles/app.css
文件的更改,并在需要时自动重新编译它。如果您刷新页面,最终的 app.css
文件将已经包含已编译的 CSS。
在 Docker 中使用 Windows 主机的 Watch 模式
如果您在 Windows 上工作,并且您的应用程序在 Docker 容器中运行,并且您在使用 --watch
选项时遇到问题,您可以尝试使用 --poll
选项运行 tailwind:build
命令。
1
$ php bin/console tailwind:build --watch --poll
Symfony CLI
如果使用 Symfony CLI,您可以将 build 命令添加为 worker,以便在您运行 symfony server:start
时启动
1 2 3 4 5 6
# .symfony.local.yaml
workers:
# ...
tailwind:
cmd: ['symfony', 'console', 'tailwind:build', '--watch']
提示
如果以守护进程方式运行 symfony server:start
,您可以运行 symfony server:log
来跟踪 worker 的输出。
它是如何工作的?
首次运行 Tailwind 命令之一时,此扩展包会将适用于您系统的正确 Tailwind 二进制文件下载到 var/tailwind/
目录中。
当您运行 tailwind:build
时,该二进制文件用于将每个 CSS 文件编译为 var/tailwind/<filename>.built.css
文件。最后,当请求 CSS 文件的内容时,此扩展包会将该文件的内容与 var/tailwind/<filename>.built.css
的内容交换。
例如:对 assets/styles/app.css
的请求将被 var/tailwind/app.built.css
替换。真棒!
部署
部署时,在 asset-map:compile
命令之前运行 tailwind:build
命令,以便构建的文件可用
1 2
$ php bin/console tailwind:build --minify
$ php bin/console asset-map:compile
表单主题
要使您的 Symfony 表单在 Tailwind 中看起来不错,您需要一个专用的表单主题。请查看 https://github.com/tales-from-a-dev/flowbite-bundle,以获取提供该功能的有用扩展包!
Tailwind 插件
此扩展包下载的 Tailwind 二进制文件已经包含“官方插件” - 例如 typography。这意味着您只需将该行添加到 tailwind.config.js
中的 plugins
键即可使用它们 - 例如 require('@tailwindcss/typography')
。
对于其他插件 - 例如 Flowbite Datepicker,您需要按照该包的文档使用 npm
require 该包
1
$ npm install flowbite
然后将其添加到 tailwind.config.js
1 2 3 4 5
module.exports = {
plugins: [
require('flowbite/plugin')
]
}
配置
要查看此扩展包的完整配置,请运行
1
$ php bin/console config:dump symfonycasts_tailwind
主要选项是 input_css
选项,默认值为 assets/styles/app.css
。这表示“源”Tailwind 文件(包含 @tailwind
指令的文件)
1 2 3
# config/packages/symfonycasts_tailwind.yaml
symfonycasts_tailwind:
input_css: 'assets/styles/other.css'
可以通过提供数组来使用多个输入文件
1 2 3 4 5
# config/packages/symfonycasts_tailwind.yaml
symfonycasts_tailwind:
input_css:
- 'assets/styles/other.css'
- 'assets/styles/another.css'
另一个选项是 config_file
选项,默认值为 tailwind.config.js
。这表示 Tailwind 配置文件
1 2 3
# config/packages/symfonycasts_tailwind.yaml
symfonycasts_tailwind:
config_file: 'tailwind.config.js'
如果您包含任何其他包含 CSS 类并且位于默认目录之外的文件,例如,位于 vendor/
目录中,如来自 symfony/twig-bridge
包的 Tailwind CSS 表单主题,则在更改 Twig 配置后
1 2 3 4
# config/packages/twig.yaml
twig:
form_themes:
- 'tailwind_2_layout.html.twig'
您将必须将它们添加到您的 tailwind.config.js
文件中
1 2 3 4 5 6 7 8
# tailwind.config.js
module.exports = {
content: [
"./assets/**/*.js",
"./templates/**/*.html.twig",
+ "./vendor/symfony/twig-bridge/Resources/views/Form/*.html.twig",
],
}
使用不同的二进制文件
独立的 Tailwind 二进制文件附带了第一方插件。但是,如果您想添加额外的插件,您可以选择通过 npm 安装 Tailwind
1
$ npm add tailwindcss
要指示扩展包使用该二进制文件,请设置 binary
选项
1 2 3
# config/packages/symfonycasts_tailwind.yaml
symfonycasts_tailwind:
binary: 'node_modules/.bin/tailwindcss'
使用不同的二进制文件版本
默认情况下,将下载最新的独立 Tailwind 二进制文件。但是,如果您想使用不同的版本,可以指定要使用的版本,设置 binary_version
选项
1 2 3
# config/packages/symfonycasts_tailwind.yaml
symfonycasts_tailwind:
binary_version: 'v3.3.0'
使用 PostCSS 配置文件
如果您想使用其他 PostCSS 插件,您可以指定要使用的 PostCSS 配置文件,设置 postcss_config_file
选项,或者将 --postcss
选项传递给 tailwind:build
命令。
1 2 3
# config/packages/symfonycasts_tailwind.yaml
symfonycasts_tailwind:
postcss_config_file: 'postcss.config.js'
1
$ php bin/console tailwind:build --postcss='postcss.config.js'