当我尝试转储Symphony2应用程序的资产托管内容时,出现以下错误:
$ php app/console assetic:dump -e prod
Dumping all prod assets.
Debug mode is off.
[InvalidArgumentException]
There is no "less" filter.
Run Code Online (Sandbox Code Playgroud)
但是,据我所知,我不使用任何需要较少过滤器的资产,当然所有我的twig模板的grep都不会变成任何东西.
我通过composer(Twitter的bootstrap)安装的依赖项之一有一些.less模板,但是我没有在我的twig模板中引用它们,我只是将它指向css版本.资产仍会试图抛弃它们吗?我怎么能告诉它不要?
作为参考,这是我在模板中包含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 %}
Run Code Online (Sandbox Code Playgroud)
很多可能的原因......
1)某些第三方软件包添加了一个依赖于编译器传递中较少过滤器的资产集合
2)有一个应用,以排除 类似
assetic:
filters:
less:
apply_to: *.less
Run Code Online (Sandbox Code Playgroud)
......在您的资产配置中,即 app/config/config.yml
3)在您的配置中使用较少的过滤器进行资产收集
assetic:
assets:
css_character:
inputs:
- "%kernel.root_dir%/../src/Acme/YourBundle/Resources/public/less/*.less"
outputs:
- css/my.css
filters:
- less
Run Code Online (Sandbox Code Playgroud)
4)您的第三方软件包之一使用{% stylesheets %}带有较少过滤器的资产功能提供了一个树枝模板:
{% stylesheets "@AcmeTwitterBundle/Resources/bootstrap/less/*.less" filter="less" %}
{# ... {{ asset_url }} ...#}
{% endstylesheets %}
Run Code Online (Sandbox Code Playgroud)
现在怎么找出来?
首先app/config/config.yml使用less过滤器检查配置文件和其他包含的资产条目.
找出使用较少过滤器的位置的最简单方法是安装ElaoWebProfilerExtraBundle,清除缓存并查看分析器左侧菜单中的"Assetic"选项卡.您将获得所有资产集合及其使用的过滤器的概述.
另一个选项 - 虽然WebProfilerExtraBundle非常棒,但不涉及新的捆绑包 - 是在try中依次禁用你的第三方捆绑包(并且每次都清除缓存),app/AppKernel.php如果assetic:dump仍然抛出异常,直到找到坏人.
或脏:启用过滤器虽然可能没有安装较少,但查看引发下一个异常的位置:
assetic:
filters:
less: ~
Run Code Online (Sandbox Code Playgroud)
...总而言之,我敢打赌你包括了supercool mopa-bootstrap捆绑包,其中几乎没有人知道它在幕后实际做了什么,但它很有名,许多人因为它的KnpBundle得分而安装它.
意思是......因为MopaBootstrapBundle提供的模板中包含的文件越少,就会抛出您的异常,即此处.
| 归档时间: |
|
| 查看次数: |
5663 次 |
| 最近记录: |