@Externus

Как настроить адреса до ресурсов в сss при использовании сжатия ресурсов в Yii2?

Доброго времени суток.

Сжимаю ресурсы, использую метод описанный
https://github.com/yiisoft/yii2/blob/master/docs/g...

Столкнулся с проблемой.
Например, в проекте есть единственный бандл Test

class TestAsset extends AssetBundle
{
    
    public $sourcePath = '@app/assets-resources/test';
    public $css = [
        '1.css'
    ];
    public $js = [
    ];
    public $depends = [

    ];
}


Который содержит 1 css файл, а в папке рядом с css лежит шрифт, который подключается в этом css
@font-face {
  font-family: 'Glyphicons Halflings';
  src: url('glyphicons-halflings-regular.eot');
}


После минимизации по такой конфигурации
(как выяснилось позже @webroot нужно задавать так Yii::setAlias('@webroot', __DIR__ . '/../../www'))
Yii::setAlias('@webroot', '../www');
Yii::setAlias('@web', '/');

return [
    // Adjust command/callback for JavaScript files compressing:
    'jsCompressor' => 'java -jar compiler.jar --js {from} --js_output_file {to}',
    // Adjust command/callback for CSS files compressing:
    'cssCompressor' => 'java -jar yuicompressor.jar --type css {from} -o {to}',
    // The list of asset bundles to compress:
    'bundles' => [
        'app\assets\TestAsset',
    ],
    // Asset bundle for compression output:
    'targets' => [
        'all' => [
            'class' => 'yii\web\AssetBundle',
            'sourcePath' => null,
            'basePath' => '@webroot/assets',
            'baseUrl' => '@web/assets',
//            'js' => 'all-{hash}.js',
            'css' => 'all-{hash}.css',
        ],
    ],
    // Asset manager configuration:
    'assetManager' => [
        'basePath' => '@webroot/assets',
        'baseUrl' => '@web/assets',
    ],
]; 


У нас в папке @webroot/assets появляется all-{hash}.css
и папка в которую скопировалось все содержание папки @app/assets-resources/test

all-{hash}.css такого содержания
@font-face{font-family:'Glyphicons Halflings';src:url('../../C:/Dropbox/_htdocs/site/www/assets/43e204a5/glyphicons-halflings-regular.eot')}a{color:#333}


Соответственно по адресу ../../C:/Dropbox/_htdocs/site/www/assets/43e204a5/glyphicons-halflings-regular.eot браузер не может получить необходимый ресурс, как исправить данную проблему?

Спасибо
  • Вопрос задан
  • 419 просмотров
Решения вопроса 1
@Externus Автор вопроса
После долгой ночи проблема почти решилась.

В конфигурации для минимизатора я задавал alias webroot как

Yii::setAlias('@webroot', '../www');

а нужно было задавать как

Yii::setAlias('@webroot', __DIR__ . '/../../www');

yii\console\controllers\AssetController при задании относительного адреса ('@webroot', '../www' ) не может "выстричь" относительный адрес из css файлов т.к. в css они заданы абсолютно, а в элиасе относительно
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы