我正在使用Symfony 2构建一个网站并使用Less,就像这样
index.html.twig:
{% stylesheets
'@AcmeWebappBundle/Resources/public/css/website.less'
filter='?yui_css'
%}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
config.yml:
assetic:
filters:
lessphp:
file: %kernel.root_dir%/../vendor/lessphp/lessc.inc.php
apply_to: "\.less$"
现在文件website.less
增长了很多,所以我决定将它拆分成不同的文件,如下所示:
{% stylesheets
'@AcmeWebappBundle/Resources/public/css/mixins.less'
'@AcmeWebappBundle/Resources/public/css/general.less'
'@AcmeWebappBundle/Resources/public/css/tasks.less'
'@AcmeWebappBundle/Resources/public/css/notes.less'
filter='?yui_css'
%}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
文件mixins.less
包含我在其他文件中使用的所有mixins
。
问题在于,如果我在notes.less
中引用mixin,那是无法识别的 - 我相信这是因为Assetic只在其正在编译的文件中搜索mixins。
顺便说一下,我使用的是lessphp,而不是node.js。
如何解决我的问题?如何使用mixins.less文件中声明的mixin来使用不同的Less文件?
答案 0 :(得分:7)
在您的示例中,您需要保留website.less并将其导入所有相关的较少文件,如下所示:
website.less:
/* import the necessary less files */
@import "mixins.less";
@import "general.less";
@import "tasks.less";
@import "notes.less";
index.html.twig:
{% stylesheets
'@AcmeWebappBundle/Resources/public/css/website.less'
filter='?yui_css'
%}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
通过这种方式,您可以为同一个捆绑包中的控制器或捆绑包提供少量文件,只需导入标记所需的相关文件(例如frontend.less
,backend.less
,{{1 }})。
我鼓励您查看Twitter Bootstrap handles imports and separates everything nicely。
的方式