这是至少在 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,但它与 less 相同) .
在/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 目录中引用文件(所以使用'bundles/acmemybundle..' 语法。你需要以符号链接模式安装资产。(php app/console 资产:安装 --symlink)
==> 你可以在输出文件名和位置中放任何你想要的东西,因为你留在 web 目录中。
最后在你的 conf.yml
# 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
这里重要的部分是 compass 中的 load_paths。在基本设置中,您有指南针:〜您需要将其更改为:
compass:
load_paths:
- "/usr/bin/compass"
- "%kernel.root_dir%/../src/Acme/MyBundle/Resources/public/css/"