В Yii2 для сжатия CSS и JS ресурсов можно использовать конфигурационный файл приложения main.php
, где определены настройки приложения.
Для начала, необходимо убедиться, что расширение yii2/assets
установлено и настроено в файле composer.json
. Если оно отсутствует, то нужно добавить его в секцию require
.
"require": { "yiisoft/yii2-assets": "~2.0.0" }
Далее, в файле main.php
необходимо настроить компонент assetManager
:
'components' => [ 'assetManager' => [ 'bundles' => [ 'yiiwebJqueryAsset' => [ 'jsOptions' => [ 'position' => yiiwebView::POS_HEAD, ], ], 'yiiwidgetsActiveFormAsset' => [ 'jsOptions' => [ 'position' => yiiwebView::POS_END, ], ], 'appassetsAppAsset' => [ 'cssOptions' => [ 'media' => 'screen', ], 'css' => [ 'css/site.css', ], 'js' => [ 'js/site.js', ], ], ], ], ],
Выше мы определили три разные группы ресурсов.
- yiiwebJqueryAsset
- этот ресурс будет подключаться в заголовке страницы.
- yiiwidgetsActiveFormAsset
- этот ресурс будет подключаться в конце страницы.
- appassetsAppAsset
- это пользовательский ассет, где мы указываем CSS и JS файлы, которые будет сжиматься и подключаться на странице. Для CSS указываем также media
, указывающий, что данный стиль применяется только для устройств с экраном.
Также возможно использование бандлов классов активов (asset bundles) для группировки ресурсов:
'components' => [ 'assetManager' => [ 'bundles' => [ 'appassetsMyAsset', ], ], ],
В данном примере, если appassetsMyAsset
наследуется от yiiwebAssetBundle
, то CSS и JS файлы, указанные в MyAsset
, будут сжиматься и подключаться.
Для сжатия и минификации ресурсов можно использовать следующие пакеты:
- matthew/yii2-minify-view
- для сжатия CSS и JS ресурсов.
- akaunting/yii2-webpack
- для сборки и оптимизации ресурсов с использованием Webpack.
Подробнее о настройке и использовании данных пакетов можно узнать из их документации.