我正在使用Symfony 4进行练习,并且试图通过CSS显示图像。现在,当我运行npm run dev
时,它仅编译CSS和JS文件,而不编译图像。我将所有图像都移到了/assets/img/
文件夹中。
现在,我很想知道如何使用CSS路径来适应Symfony环境。我只找到了与Symfony 2和3有关的解决方案,这些解决方案在此版本中不起作用。我的CSS是:
.about-solution-about {
background: url(/img/placeholder.jpg) no-repeat center;
background-size: cover;
width: 540px;
height: 330px;
padding-top: 40px;
}
图像现在位于以下位置:project/assets/img/placeholder.jpg
我需要通过编译的app.css文件访问公用文件夹中的该图像。我知道app.css
和app.js
文件已编译并放置在/public/build/
文件夹中。
现在,如何将所有图像资产编译或构建到/public/build/
文件夹中,并在CSS中重新调用这些文件?
答案 0 :(得分:1)
/assets/
文件夹中常规CSS和JS资产的构建由项目目录中的 Webpack Encore webpack.config.js
文件处理。
在终端中运行npm run dev
命令时,文件app.css
和app.js
被编译并放置在/public/build/
文件夹中。
如果您还希望将图像包含在/public/build/
文件夹中,则可以使用 Copy Webpack Plugin 。
首先,在终端中使用npm i -D copy-webpack-plugin
命令安装插件。
然后在您的主项目文件夹中编辑webpack.config.js
文件。
在第一行下,添加:
var CopyWebpackPlugin = require('copy-webpack-plugin');
然后在Encore部分以分号;
结尾之前,添加:
.addPlugin(new CopyWebpackPlugin([
{ from: './assets/img', to: 'img' }
]))
整个文件here的JSFiddle 示例。
现在,请确保您在/assets/img/
文件夹中有图像。
运行npm run dev
命令,您会发现{assets}文件夹中的所有图像现在在/public/build/img/
文件夹中可用!
在您的示例中,CSS中的正确路径现在为:
background: url(/build/img/placeholder.jpg) no-repeat center;
答案 1 :(得分:0)
您可以尝试在样式表树枝标签/基本树枝/中使用cssrewrite过滤器:
{% stylesheets 'source to css files' filter='cssrewrite' %}
{% endstylesheets %}
答案 2 :(得分:0)
我认为无法在纯CSS代码中使用Assets。我建议您在实际可以的地方在HTML中设置background参数。 希望你能弄清楚!