Symfony AssetMapper解析@import "tailwindcss"引发Preline UI集成问题
环境配置
- Symfony 7.x + AssetMapper(无Node构建流水线)
- 使用
symfonycasts/tailwind-bundle编译CSS - Preline UI通过npm安装后复制至
assets/vendor/preline/目录
问题现象
遵循官方教程完成集成后,页面加载失败,控制台报错:无法找到path/to/project/assets/vendor/preline/src/plugins/datepicker/styles.css中引用的"tailwindcss"资产,对应物理文件不存在。
问题原因
TailwindBundle可正常编译app.css生成app.built.css文件,但运行时Symfony的AssetMapper会独立扫描Preline的原始CSS文件,将其中的@import "tailwindcss";指令当作物理文件路径解析,而该路径下并无对应文件。这类Tailwind专属指令仅在Tailwind编译上下文有意义,不应被AssetMapper作为独立资产处理。
已尝试操作
- 执行
php bin/console tailwind:build --watch可正常编译app.css - 编译后的
/var/tailwind/app.built.css可正常访问,且模板引用正确 - 错误仅在AssetMapper加载原始vendor CSS时出现,编译阶段无报错
求助问题
如何阻止Symfony的AssetMapper扫描/处理包含@import "tailwindcss";的Preline原始CSS文件?是否可以排除特定vendor路径,或者需要将此类文件移出assets目录?
相关问题反馈
该问题在Preline官方社区有对应反馈,内容翻译如下:
用户在无Webpack的Symfony项目中使用AssetMapper集成Preline时,遇到CSS导入错误:Preline插件的CSS文件中包含
@import "tailwindcss";语句,导致AssetMapper无法找到对应文件。用户尝试将Preline文件放在assets目录外,但Tailwind无法扫描到该目录;放在assets目录内则AssetMapper触发报错。用户询问是否有解决方案,比如Preline能否移除这类Tailwind导入语句,或者提供适配AssetMapper的版本。
内容的提问来源于stack exchange,提问作者Sully_vian

