我正在尝试使用assetic在Symfony项目中设置CSS和JS缩小。我不能使用 java 或 node.js 或类似的东西,所以我按照 Symfony2 minify 的说明在没有 java 或 node by userlond 的情况下获取使用 minify 为我做的资产过滤器。
我按照说明并通过作曲家安装了 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)"}
[SymfonyComponentDebugExceptionClassNotFoundException]
Attempted to load class "JSMinPlus" from the global namespace.
Did you forget a "use" statement?
如果我不尝试使用 jsminplus 过滤器,但仍然使用 minifycsscompressor 过滤器,它似乎一切正常(并且我缩小了我的 CSS(。
缩小项目中是否有某些变化造成了不兼容或其他原因?
我在 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'
行,一切正常(只是没有缩小(。
你基于这个的答案已经过时了,从那时起资产发生了变化。因此,除非你专门使用旧版本的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
中的 ? 意味着这只会在生产环境中缩小。
请参阅非 JavaScript 缩小解决方案的文档。