资产资产收集在调试模式下连接

时间:2012-06-21 21:21:03

标签: symfony assetic

我试图在Symfony 2项目中使用Assetic。我在config.yml中有以下设置:

# app/config/config.yml
assetic:
    debug:          %kernel.debug%
    use_controller: true
    filters:
        cssrewrite: ~
        yui_css:
            jar: /home/testing/bin/yuicompressor-2.4.7.jar
        less:
            node: /usr/bin/node
            node_paths: [/usr/local/bin/]
            apply_to: "\.less$"
    assets:
        all_js:
            inputs:
                - @FoundationViewBundle/Resources/public/js/*
            filters: [?yui_js]
        all_css:
            inputs:
                - @FoundationViewBundle/Resources/public/css/*
            filters: [less, ?yui_css]

(如果您想知道,这些设置未在config_dev.yml文件中被覆盖。)

这些集合由Assetic选取,并为它们创建路线。每个文件都有单独的路由,其中​​包含数字和没有文件扩展名的文件名。例如,对于“base.css”文件,下载文件的路径(已应用过滤器)为“/ assetic / all_css_part_1_base_1”。

然后我将资产集合包含在我的Twig模板中,如下所示:

{% stylesheets '@all_css' %}
    <link rel="stylesheet" type="text/css" media="screen" href="{{ asset_url }}">
{% endstylesheets %}

(同样对于“all_js”集合,但我将使用css方面来演示我的问题。)

当Twig呈现我的模板时,它不会使用为单个文件创建的路径,而是将“all_css”集合的“asset_url”显示为“/css/9118a5a_part_1.css”。

我正在使用dev前端控制器并测试过Assetic认为它处于调试模式。 (不应用仅限生产的过滤器。)但是文件仍在连接,尽管文档建议不这样做。

由于行号不匹配,因此很难跟踪这些文件中的问题,尤其是对于JavaScript错误。为了让Twig分别显示文件,我还需要做些什么吗?

2 个答案:

答案 0 :(得分:1)

您必须在树枝块中指定ouput参数,如下所示。

{% javascripts '@all_js' output="assetic/js/all.min.js" debug=false %}
   <script type="text/javascript" charset="utf-8" src="{{ asset_url }}">
{% endjavascripts %}

{% stylesheets '@all_css' output="assetic/css/all.min.css" debug=false  %}
   <link rel="stylesheet" type="text/css" media="screen" href="{{ asset_url }}">
{% endstylesheets %}

最好是依靠 config.yml 中指定的output参数,但遗憾的是它不起作用。它可以在转储资产时输出正确的文件,但不能在树枝中自动插入资产。 您必须像上一个示例中那样指定它。

这里的debug参数是可选的,它意味着强制特定集合的调试模式并输出不同的文件。您也可以在 config.yml 中设置此参数。

assets:
    all_js:
        inputs:
            - @FoundationViewBundle/Resources/public/js/*
        filters: [?yui_js]
        output: "assetic/css/all.min.js"
        debug: true

答案 1 :(得分:0)

您只需在模板中列出单独的资源,它就会生成单独的文件as documented here。在制作时,它将合并为1个文件。