在编译之前合并多个.less文件是否可行?

3

我在Symfony2中使用Assetic资源管理与LESS,使用lessc作为过滤器将.less编译为.css:

filters:
    cssrewrite: ~
    less:
        node: /usr/bin/node
        node_paths: [/usr/lib/node_modules]

我正在使用Twitter Bootstrap构建一个应用程序,在每个.less文件中,我想使用Bootstrap变量/类来为应用程序的特定模块制作自定义定义。因此,我有以下示例:
{% stylesheets filter="cssrewrite, less" output="css/less_compiled.css"
    'bundles/mopabootstrap/bootstrap/less/bootstrap.less'
    'bundles/mybundle/less/module1.less'
    'bundles/mybundle/less/module2.less'

%}<link href="{{ asset_url }}" rel="stylesheet">{% endstylesheets %}

现在,如果我想在module1.less和module2.less中使用Bootstrap的vars和classes,我必须在每个模块文件中添加@import [bootstrap_less_file]。这不是非常灵活的,它导致每个文件中都有Bootstrap定义的重复。
我知道我可以创建一个.less "index"文件,它会导入所有需要的文件,然后编译它,但我认为这不是一个弹性的/ Symfony2 / bundles方法,因为我会失去assetic给我的好处。
[编辑:] 我想知道是否有任何解决方案,将{% stylesheet %}部分中的所有文件合并,然后将其发送到less过滤器/编译器。
提前感谢您的帮助。

抱歉犯了一个错误,因为我在写完帖子之前就已经发布了它(不小心按下了回车键)。现在我已经编辑过了。 - Kamil J.
我刚刚发现,将所有文件作为@import插入到一个“索引”文件中,无法让我在另一个文件中使用一个文件。所以我现在看不到任何解决方案。 - Kamil J.
你正在使用哪个版本的Assetic?https://github.com/kriswallsmith/assetic/issues/426 可能是你的问题。 - Tom Tom
@TomToms,感谢您提供的链接。我认为这是一个类似的问题,但不完全相同。在所包含的问题中有一个错误描述,而我正在寻找一个功能 :) - Kamil J.
1个回答

3

如果您正在运行LESS 1.5

最新版本的LESS允许您仅作为引用来导入。 因此,在使用bootstrap的less文件中...

@import (reference) bootstrap.less;

...将使其可用作mixin等,但不会将代码编译成CSS(避免代码重复)。


1
谢谢您的回复。这在一定程度上解决了问题,但已经足够好了。如果有人知道可以修改Assetic功能以按照我上述描述工作的bundle/library,请提供信息,因为那将非常有用。 - Kamil J.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接