2017-05-26 35 views
1

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

我遵循的指示,并通过安装作曲家缩小,但我不断收到以下时,我做了一个assetic转储:

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项目中有什么改变,造成了不兼容或什么?

我使用树枝模板的代码是:

{% 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'线,这一切工作正常(而且是不精缩)。

回答

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意味着这只会在prod环境中被缩小。

查看documentation for a non javascript minifying solution

+0

似乎很好,谢谢。 – MicWit

相关问题