簡體   English   中英

如何從Assetic使用Symfony中的CSS和JS縮小

[英]How to use CSS and JS minification in Symfony from assetic

我正在嘗試使用Assetic在Symfony項目中設置CSS和JS最小化。 我不能使用java或node.js或類似的東西,所以我遵循Symfony2 minify上的指示, 沒有 userlond使用java或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'行,那么一切都很好(只是沒有縮小)。

您基於此的答案已過時,此后資產發生了變化。 因此,除非您專門使用舊版本的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這意味着只會在產品環境中?jsqueeze

請參閱說明文件以獲取非javascript壓縮解決方案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM