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



我正在尝试使用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 缩小解决方案的文档。

最新更新