Как отключить объединение ассетов при разработке в OctoberCMS

October CMS предлагает удобную функциональность для объединения ресурсов js / css. В моем layouts/default.htm у меня есть такие сценарии:

<script src="{{ [
    'assets/javascript/jquery.js',
    'assets/vendor/bootstrap/js/transition.js',
    'assets/vendor/bootstrap/js/alert.js',
    'assets/vendor/bootstrap/js/button.js',
    'assets/vendor/bootstrap/js/carousel.js',
    'assets/vendor/bootstrap/js/collapse.js',
    'assets/vendor/bootstrap/js/dropdown.js',
    'assets/vendor/bootstrap/js/modal.js',
    'assets/vendor/bootstrap/js/tooltip.js',
    'assets/vendor/bootstrap/js/popover.js',
    'assets/vendor/bootstrap/js/scrollspy.js',
    'assets/vendor/bootstrap/js/tab.js',
    'assets/vendor/bootstrap/js/affix.js',
    'assets/javascript/app.js',
    '@framework',
    '@framework.extras'
]|theme }}"></script>
{% scripts %}

В config/cms.php файле у меня есть:

'enableAssetCache' => false,
'enableAssetMinify' => null,

А в config/app.php:

'debug' => true,

Это приводит к объединению всех скриптов, определенных в массиве twig. На обработанном веб-сайте я получаю один файл javascript

<script src="http://localhost/Test/october/combine/2cdc17b704821cd2ffbd9be8e4d340f9-1457016128"></script>

Я хотел бы иметь возможность НЕ комбинировать мои активы, пока 'debug' => true включен в config/app.php (то есть в среде разработки).

Я знаю, что мои активы могут обслуживаться отдельно октябрьской CMS, если я добавлю их в свой макет в отдельных тегах скрипта. Но это могло бы служить им и при производстве отдельно. Пример:

<script src="{{ 'assets/js/one.js'|theme }}"></script>
<script src="{{ 'assets/js/two.js'|theme }}"></script>

Я обнаружил на github эту 1,5-летнюю проблему без полезного ответа: https://github.com/octobercms/october/issues/289

В документации также ничего полезного по этому поводу не говорится: https://octobercms.com/docs/markup/filter-theme

Ты хоть представляешь, как с этим бороться? Хотя, возможно, я смогу создать плагин в OctoberCMS, который будет вводить ресурсы в макет в зависимости от настройки конфигурации (отладка true / false). Но, насколько мне известно, для внедрения ресурсов из плагина необходимо, чтобы ресурсы находились в каталоге плагина, а не в каталоге тем.


person rsobon    schedule 09.03.2016    source источник


Ответы (2)


Хорошо, мне удалось это решить, но не с config/app.php, упомянутым в вопросе.

Другое решение требует создания .env файла в корневом каталоге OctoberCMS. Этот файл по умолчанию находится в .gitignore, поэтому вы можете использовать разные файлы .env для производства и разработки (Часть документации)

Содержимое этого файла должно быть:

APP_ENV=dev

Затем вы можете получить доступ к переменной в ветке:

{% if this.environment == 'dev' %}
    <script src="{{ 'assets/vendor/jquery.min.js'|theme }}"></script>
    <script src="{{ 'assets/semantic/dist/semantic.min.js'|theme }}"></script>
    <script src="{{ 'assets/javascript/app.js' | theme }}"></script>
    {% framework extras %}
{% else %}
    <script src="{{ [
     'assets/vendor/jquery.js',
     'assets/semantic/dist/semantic.js',
     'assets/javascript/app.js',
     '@framework',
     '@framework.extras'
     ]|theme }}"></script>
{% endif %}
person rsobon    schedule 19.03.2016

Попробуйте отключить это в конфигурационном файле (app / config / cms.php).

/*
|--------------------------------------------------------------------------
| Determines if the asset minifcation is enabled.
|--------------------------------------------------------------------------
|
| If the minifcation is enabled, combined assets are compressed (minified).
| It is recommended to disable the minification during the development, and
| enable it in the production mode.
|
*/

'enableAssetMinify' => true,
person Beaudinn Greve    schedule 09.04.2016
comment
op просил отключить комбайнер, а не минификацию - person dozed; 15.05.2016