这是一个完整的工作示例至少在Symfony的2.8 。这个例子使用了Assetic,应该可以在你的css中使用嵌入文件。
这里树状
/app
/src
---/Acme
------/MyBundle
---------/Ressources
------------/public
---------------/css
------/MyOtherBundle
---------/Ressources
------------/public
---------------/css
/web
---/bundles
------/acmemybundle
------/acmemyotherbundle
---/css
------/built
所以我们说/src/Acme/MyBundle/Ressources/public/css/main.scss是所有我想在进口报关文件我其他捆绑(在我的情况下,我使用sass,但它与少量相同)。
在/src/Acme/MyOtherBundle/Ressources/public/css/mycss.scss我会做到:
@import "../../../../MyBundle/Resources/public/css/main";
这指的是文件的经典物理位置,所以你的IDE会找到它。
现在有趣的部分。我们要编译,缩小并将所有scss文件重命名为只有一个css文件。我们可以用Assetics来做到这一点。
在加载你的css文件(在我的情况下/app/Ressources/views/css.html.twig)。
{% stylesheets
filter='compass'
filter='?uglifycss'
filter='cssrewrite'
output='css/built/myMinifiedAndCompiledSass.css'
'bundles/mybundle/css/*.scss'
'bundles/myotherbundle/css/*.scss'
%}
<link rel="stylesheet" type="text/css" href="{{ asset_url }}">
{% endstylesheets %}
==>在这里,你必须从/ web目录(因此使用参考文件“包/ acmemybundle ..”语法,你需要安装在资产符号链接模式。(PHP应用程序/控制台资产:在您的conf.yml安装--symlink)
==>你可以把任何你想要的输出filemane和位置,因为你在web目录留
而且finaly
# Assetic Configuration
assetic:
filters:
cssrewrite: ~
sass: ~
compass:
load_paths:
- "/usr/bin/compass"
- "%kernel.root_dir%/../src/Acme/MyBundle/Resources/public/css/"
uglifycss:
bin: %kernel.root_dir%/../node_modules/.bin/uglifycss
uglifyjs2:
bin: %kernel.root_dir%/../node_modules/.bin/uglifyjs
。这里的重要部分是指南针中的load_paths。 在基本设置你的指南针:〜 您需要更改它:
compass:
load_paths:
- "/usr/bin/compass"
- "%kernel.root_dir%/../src/Acme/MyBundle/Resources/public/css/"
是不是也是一个选项供您使用assetic到少合并文件,而不是导入它们的彼此内ffrom? – 2013-02-22 15:43:02
不太可能。我需要引入其他LESS文件来扩展他人的行为,而我开发的可能性。 – 2013-02-22 16:51:06
看看过滤器定义,似乎没有办法通过任何自定义路径(搜索包含)https://github.com/symfony/AsseticBundle/blob/master/Resources/config/filters/less.xml。这是要调用的方法:https://github.com/kriswallsmith/assetic/blob/master/src/Assetic/Filter/LessFilter.php#L59 – gremo 2013-02-22 17:23:45