我正在尝试使用资产在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'
行,一切正常(并且不会缩小)。
答案 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
中意味着这只会在生产环境中缩小。