Symfony 2分割较少的文件

dan*_*dan 1 less symfony assetic

我正在使用Symfony 2构建一个网站并使用Less,就像这样

index.html.twig:

{% stylesheets
    '@AcmeWebappBundle/Resources/public/css/website.less'
    filter='?yui_css'
%}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
Run Code Online (Sandbox Code Playgroud)

config.yml:

assetic:
    filters:
        lessphp:
            file: %kernel.root_dir%/../vendor/lessphp/lessc.inc.php
            apply_to: "\.less$"
Run Code Online (Sandbox Code Playgroud)

现在文件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 %}
Run Code Online (Sandbox Code Playgroud)

该文件mixins.less包含mixins我在其他文件中使用的所有内容.

问题是,如果我引用了一个mixin notes.less,那是无法识别的 - 我相信这是因为Assetic只在它正在编译的文件中搜索mixins.顺便说一句,我使用lessphp,而不是node.js.

我怎样才能解决我的问题?如何使用mixins.less文件中声明的mixin使用不同的Less文件?

cva*_*mar 7

在您的示例中,您需要保留website.less并让它导入所有相关的较少文件,如下所示:

website.less:

/* import the necessary less files */
@import "mixins.less";
@import "general.less";
@import "tasks.less";
@import "notes.less";
Run Code Online (Sandbox Code Playgroud)

index.html.twig:

{% stylesheets
    '@AcmeWebappBundle/Resources/public/css/website.less'
    filter='?yui_css'
%}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
Run Code Online (Sandbox Code Playgroud)

这样你可以有你的控制器或束,其住在同捆数较少的文件,只需输入所需标记相关的文件(例如frontend.less,backend.less,mobile.less).

我鼓励你看看Twitter Bootstrap如何处理导入并很好地分离一切.