如何在资产中使用Symfony中的CSS和JS缩小

时间:2017-05-26 06:04:11

标签: javascript css symfony minify

我正在尝试使用资产在Symfony项目中设置CSS和JS缩小。我不能使用java或node.js或类似的东西,因此我按照userlond的Symfony2 minify without java or node指示来获取资产中使用minify为我做的过滤器。

我按照说明操作并通过composer安装了minify,但是当我进行资产转储时,我仍然会收到以下内容:

php.CRITICAL: Fatal Error: Class 'JSMinPlus' not found {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalErrorException(code: 0): Error: Class 'JSMinPlus' not found at /var/www/html/new_test_1/vendor/kriswallsmith/assetic/src/Assetic/Filter/JSMinPlusFilter.php:32)"}

[Symfony\Component\Debug\Exception\ClassNotFoundException]      
  Attempted to load class "JSMinPlus" from the global namespace.  
  Did you forget a "use" statement?

如果我不尝试使用jsminplus过滤器,但仍然使用minifycsscompressor过滤器,那么一切似乎都能正常工作(我的CSS缩小了)。

minify项目中是否有更改已创建不兼容的内容?

我在TWIG模板中使用的代码是:

{% javascripts
    '@TemplateBundle/Resources/public/media/site-assets/javascript/vendor/jquery-1.12.1.min.js'
    '@TemplateBundle/Resources/public/media/site-assets/javascript/vendor/*.js'
    '@TemplateBundle/Resources/public/media/site-assets/javascript/*.js'
    filter='jsminplus'
%}

    <script src="{{ asset_url }}"></script>

{% endjavascripts %}

如果我取出filter='jsminplus'行,一切正常(并且不会缩小)。

1 个答案:

答案 0 :(得分:2)

你所依据的答案是过时的,从此改变了资产。 因此,除非您专门使用旧版本的Symfony,否则您将需要一些基本的内容

# app/config/config.yml
assetic:
    filters:
        jsqueeze: ~
        # ...

然后

{% javascripts filter="?jsqueeze" output="js/app.js"
    "@TemplateBundle/Resources/public/media/site-assets/javascript/*.js"
    "@TemplateBundle/Resources/public/media/site-assets/javascript/vendor/*.js"
    "@TemplateBundle/Resources/public/media/site-assets/javascript/*.js"
%}
    <script src="{{ asset_url }}"></script>
{% endjavascripts %}

注意那个?在?jsqueeze中意味着这只会在生产环境中缩小。

请参阅documentation for a non javascript minifying solution