如何在Symfony项目的AssetMapper中使用CSS @import语法?
嘿,我来帮你搞定这个Symfony AssetMapper里用CSS @import的问题!
首先得跟你说清楚,AssetMapper对CSS @import的处理和咱们平时用预处理器不太一样,得注意几个关键的点:
严格遵循路径规则:
你写的@import './components/admin/_stat_card.css'看起来路径是对的,但要确保这个相对路径是从当前admin.css的位置出发的。比如如果admin.css在assets/styles/目录下,那_stat_card.css得确实在assets/styles/components/admin/里才行。确保导入的文件被AssetMapper识别:
检查下config/packages/asset_mapper.yaml里的paths配置,默认是包含assets/目录的,只要你的CSS文件都在assets/下面,就不会被排除在外。要是你自定义了路径,可得把存放_stat_card.css的文件夹加进去。注意CSS @import的语法位置:
这是CSS本身的规则哦——所有@import语句必须放在CSS文件的最顶部,不能放在任何CSS选择器或者规则之后,不然浏览器会直接忽略这个导入请求,跟AssetMapper没关系哒。试试AssetMapper推荐的替代方案:
要是原生的CSS @import还是不好使,其实AssetMapper更推荐通过JavaScript来导入CSS文件,这种方式它处理起来更稳定。比如你可以新建一个admin.js文件,里面写:import './styles/admin.css'; import './styles/components/admin/_stat_card.css';然后在模板里引用这个
admin.js资源,AssetMapper会自动把这些CSS合并处理好,效果是一样的。清理缓存试试:
有时候Symfony的缓存会拖后腿,运行一下php bin/console cache:clear,生产环境的话再跑一遍php bin/console asset-map:compile,确保资源被重新编译过。
你提到浏览器报错,要是能把具体的错误信息贴出来,能更精准地定位问题,但按照上面这几个常见排查点,应该能解决你的问题啦。
备注:内容来源于stack exchange,提问作者Matthieu Le Verger

