symfony - assetic:dump 在 "less"过滤器上失败

标签 symfony assetic

当我尝试将 Assets 托管内容转储到 Symphony2 应用程序时,出现以下错误:

$ php app/console assetic:dump -e prod
Dumping all prod assets.
Debug mode is off.

  [InvalidArgumentException]
  There is no "less" filter.

但是,据我所知,我没有使用任何需要 less 过滤器的资源,当然,我所有的 twig 模板的 grep 不会出现任何结果。

我通过 Composer(Twitter 的 bootstrap)安装的依赖项之一有一些 .less 模板,但我没有在我的 twig 模板中引用它们,我只是将其指向 css 版本。 assetic还会尝试抛弃它们吗?我怎样才能告诉它不要这样做?

作为引用,这是我在模板中包含 css 的方式

{% stylesheets filter="cssrewrite"
  '../vendor/jquery-ui-css/jquery-ui-css/*css'
  '../vendor/twitter/bootstrap/docs/assets/css/bootstrap*.css'
%}
<link rel="stylesheet" type="text/css" href="{{ asset_url }}">
{% endstylesheets %}

最佳答案

嗯有很多可能的原因......

1) 某些第三方 bundle 根据编译器 channel 中的 less 过滤器添加 Assets 集合

2)有一个适用规则,例如

assetic:
    filters:
        less:
            apply_to: *.less

...在您的 Assets 配置中,即 app/config/config.yml

3) 您的配置中有一个使用 less 过滤器的 Assets 集合

assetic:
    assets:
        css_character:
            inputs: 
                 - "%kernel.root_dir%/../src/Acme/YourBundle/Resources/public/less/*.less"
             outputs:
                 - css/my.css
             filters:
                 - less

4) 您的第三方 bundle 之一使用 assetic 的 {% stylesheets %} 函数和 less 过滤器提供了一个 twig 模板:

{% stylesheets "@AcmeTwitterBundle/Resources/bootstrap/less/*.less" filter="less" %}
    {# ... {{ asset_url }} ...#}
{% endstylesheets %}
<小时/>

现在如何找出答案?

首先使用 less 过滤器检查您的配置文件 app/config/config.yml 和其他包含的配置文件中的 assetic 条目。

找出较少过滤器使用位置的最简单方法是安装 ElaoWebProfilerExtraBundle ,清除缓存并查看分析器左侧菜单中的“ Assets ”选项卡。您将获得所有 Assets 集合及其使用的过滤器的概述。

另一种选择 - 尽管 WebProfilerExtraBundle 很棒,但不涉及新的 bundle - 是在 app/AppKernel.php 中逐一禁用第三方 bundle (并每次清除缓存)尝试如果assetic:dump 仍然会抛出异常,直到找到坏男孩。

或者脏:启用过滤器,尽管可能没有安装 less 并查看抛出下一个异常的位置:

assetic:
    filters:
        less: ~

...总而言之,我敢打赌您包含了超酷的 mopa-bootstrap bundle ,几乎没有人知道它在幕后实际上在做什么,但它很出名,很多人安装它是因为它是 KnpBundle 的分数。

意思是...您的异常将被抛出,因为 MopaBootstrapBundle 提供的模板中包含的文件较少,即 here

关于symfony - assetic:dump 在 "less"过滤器上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17604941/

相关文章:

symfony - 如何将 callable 注入(inject) Symfon2 依赖注入(inject)容器服务

php - Symfony SQLSTATE[HY000] [2002] 1and1 服务器拒绝连接

symfony - 使用 Sonata_type_collection 处理一对多关系的问题

symfony - Sonata Admin Bundle 一对多关系不保存外部 ID

javascript - 在 html.twig symfony2 中导入 js

javascript - Symfony2 assetic 导致 javascript 错误

Laravel 选择命令数字键

symfony assetic 在请求文件时给出 500 错误

css - Symfony 2 Assets 元素布局和资源管理

Symfony + Assetic : ParameterNotFoundException