Javascript — UglifyJS не работает в производственной среде Symfony2

Я полагаю, что настроил это правильно — вот мой config.yml:

assetic:
debug:          "%kernel.debug%"use_controller: false
node: "/usr/local/bin/node"bundles:        [ ]
#java: /usr/bin/java
filters:
uglifyjs2:
# the path to the uglifyjs executable
bin: "%kernel.root_dir%/Resources/node_modules/.bin/uglifyjs"cssrewrite: ~

Я храню uglifyjs локально в проекте, чтобы облегчить его распространение.

Я делаю следующее, чтобы сгенерировать все файлы JS, используя uglifyjs:

{% javascripts
'vendor/bower_components/jquery/dist/jquery.min.js'
'vendor/bower_components/bootstrap-sass/assets/javascripts/bootstrap.min.js'
'vendor/bower_components/angular-route/angular-route.min.js'
'vendor/bower_components/underscore/underscore-min.js'
'vendor/bower_components/angular-cookies/angular-cookies.min.js'
'js/test1.js'
'js/test2.js'
filter='?uglifyjs2' %}

<script src="{{ asset_url }}"></script>

{% endjavascripts %}

Если я загружаю страницу в режиме разработки (/app_dev.php), она работает нормально и просто загружает файлы по отдельности, но минимизируется с помощью uglifyjs; но если я попытаюсь загрузить его в производство, он объединит все эти файлы js в один файл js (т. е. a07da66.js). Проблема, с которой я сталкиваюсь, заключается в том, что при попытке загрузить этот файл возникает ошибка 404 (a07da66.js). Он пытается получить к нему доступ в js/a07da66.js — кажется, чтобы создать их под JS / по умолчанию.

Почему он отлично работает в app_dev.php, когда создает новые файлы в js / (js / a07da66_jquery.min_1.js), но не в работе?

2

Решение

Ты должен бежать app/console --env=prod assetic:dump генерировать активы для рабочей среды.

Практическое правило:

  • Пока в DEV режим, держать app/console assetic:watch --force работает в фоновом режиме (по крайней мере, при работе с файлами JS / CSS). Будет регенерировать DEV активы всякий раз, когда файл изменяется.
  • При развертывании / сборке запускайте app/console --env=prod assetic:dump один раз, чтобы иметь объединенные активы для тычок генерироваться.

Идея режима prod заключается в том, что вы генерируете какую-то сборку или снимок вашей текущей разработки. Поэтому вы бы использовали app/console --env=prod assetic:dump только при создании сборки.

Конечно, вы можете переключить свой DEV среда для тычок для краткого теста, но затем вы должны выполнить процедуру сборки (которая включает генерацию тычок активы).

2

Другие решения

В Symfony 3+ нужно бежать bin/console assetic:dump --env=prod генерировать файлы для среды prod.

Если вы внесли изменения в активы, вы должны запустить bin/console assetic:watch каждый раз, чтобы восстановить файлы.

0

По вопросам рекламы [email protected]