Проблемы минимизации / агрегирования файлов CSS/JS с Symfony 2.5 и UglifyCSS/JS
Я следовал этим инструкциям, чтобы включить и UglifyJs2, и UglifyCss в моей среде разработки (для начала... я не могу рисковать отключением рабочего сервера с этой проблемой!)
Под моим config_dev.yml
Я настроил следующее (я начал только с bin
параметры, но добавлены дополнительные конфигурации на случай, если что-то другое вызовет проблему.)
assetic:
use_controller: %use_assetic_controller%
filters:
uglifycss:
bin: "%kernel.root_dir%/Resources/node_modules/.bin/uglifycss"
node: /usr/local/bin/node
apply_to: '\.css$'
uglifyjs2:
bin: "%kernel.root_dir%/Resources/node_modules/.bin/uglifyjs"
node: /usr/local/bin/node
apply_to: '\.js$'
и в моем base.html.twig
файл:
{% javascripts 'bundles/fosjsrouting/js/router.js'
'bundles/legalcheck/js/angular.min.js'
'bundles/legalcheck/js/plugins/*'
'bundles/legalcheck/js/app.js'
'bundles/legalcheck/js/controllers/*'
filter='uglifyjs2'
%}
<script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}
а также
{% stylesheets 'bundles/legalcheck/css/*' filter='cssrewrite' filter='uglifycss' %}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
Когда я бегу php app/console assetic:dump --env=prod --verbose
Все файлы генерируются без ошибок. Они даже уменьшены в этом пункте!
Однако когда я загружаю приложение в браузер, все ресурсы CSS и JS возвращают ошибку 500.
Вот что возвращает каждый файл Javascript вместе с тем, что возвращает каждый файл CSS. Я получаю ошибку "5" из-за того, что похоже на UglifyJS и / или UglifyCSS, или на сам Node. Я подозреваю, что куда-то отправляют не ту вещь.
Есть идеи? Я использую локальный сервер MAMP для создания среды разработки. Также обратите внимание, что я удалил место из "Git Repos" на своем пути, чтобы избежать очевидных проблем, таких как проблемы с путями, как шаг устранения неполадок.
Обновить
Я пытался запустить те же настройки в config_dev.yml
в мой config_prod.yml
и обнаружил, что все отлично работает на производстве. Похоже, что попытка загрузить минимизированные активы через app_dev.php
вызывает проблемы... но я все еще не знаю что! Было бы неплохо, если бы минификацию можно было протестировать через среду разработки, поэтому я оставляю вопрос открытым как для этой проблемы, так и для поощрения диалога для ее решения.
1 ответ
ассемблерный режим отладки:)
вы сбрасываете файлы с --prod
(в котором режим отладки отключен по умолчанию)...
... и попытаться получить к ним доступ в dev
среда после.
Если включен режим отладки, коллекции активов будут разбиты на несколько файлов, которые выглядят так:
<hash>_partX_<filename>.js
Это то, что Chrome Devtools показывает вам, и проблема во время сброса на лету приводит к 500
ошибки.
Вы не сбросили эти файлы для отладки с помощью команды, которую вы вызвали и (до тех пор, пока у вас нет use_controller: true
) они также не будут сбрасываться на лету.
Если у вас есть use_controller: true
... любой ненулевой код завершения запуска фильтра приведет к 500
ошибка. Это то, что вы испытываете.
решение:
Либо отключить debug
режим для одной коллекции активов, как это...
{% javascripts '...'
filter='uglifyjs2'
debug=false
%}
... или добавить...
assetic:
debug: false
на ваш config_dev.yml, чтобы решить проблему.
Наконец, свалите свои активы с app/console assetic:dump
и правильный флаг среды.