如何在 assetic 的 Symfony 中使用 CSS 和 JS 缩小
How to use CSS and JS minification in Symfony from assetic
我正在尝试使用 assetic 在 Symfony 项目中设置 CSS 和 JS 缩小。我不能使用 java 或 node.js 或类似的东西,所以我按照 userlond 在 Symfony2 minify without java or node 的指示来获取 assetic 中使用 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
中意味着这只会在生产环境中缩小。
我正在尝试使用 assetic 在 Symfony 项目中设置 CSS 和 JS 缩小。我不能使用 java 或 node.js 或类似的东西,所以我按照 userlond 在 Symfony2 minify without java or node 的指示来获取 assetic 中使用 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
中意味着这只会在生产环境中缩小。