如何让Assetic自动将CSS背景图像从我的Bundle移动到Web目录?

时间:2013-02-12 04:09:30

标签: symfony sass symfony-2.1 compass-sass assetic

使用Alexandre Salomé's [nonetheless excellent] "Sass, Compass, and Assetic in 10 minutes"经过大量麻烦后,我终于得到了Compass Assetic过滤器,将我的SCSS文件转换为项目/ web目录中的CSS文件。我甚至认为我已经有了指南针image-url()函数来引用应该存在的图像。

不幸的是,我不知道如何在我的包中保留图像,并且在需要时让Assetic正确地将它们复制或重写到/ web目录中。他们只是不去那里。暂时(...而且似乎这可能是预期的功能?)我只是将它们复制到/ web / images目录中。这不可能是正确的。 ......对吧?

1 个答案:

答案 0 :(得分:4)

这不是资产可以而且应该做的事情,而是Symfony可以做的事情。

首先,您应该将资产放在捆绑结构中的正确位置。这些应放在Resources/public目录中。这是样式表,脚本,图像和所有其他公共事物所在的地方。有关捆绑结构的更多信息,请阅读文档:"How to use Best Practices for Structuring Bundles"

FrameworkBundle带有一个名为assets:install的有用命令,它将所有包中的所有资产安装到web/bundles/<bundle_name>目录中。每次使用composer updatecomposer install命令时都会运行此命令。更新捆绑软件中的某些资产时,可以运行此命令将所有内容复制到Web目录:

$ php app/console assets:install

有时,您不希望每次更新某些内容时都运行此命令。例如,如果您开始设置页面样式,则需要每分钟运行一次该命令。如果服务器支持使用符号链接,则可以使用--symlink选项。这样,您不需要每次都运行该命令。