Возможна ли компиляция *.less=>*.css "на лету" посредством Yii

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
tigr1991
Сообщения: 8
Зарегистрирован: 2015.07.16, 17:59

Возможна ли компиляция *.less=>*.css "на лету" посредством Yii

Сообщение tigr1991 »

Подскажите, в чём ошибаюсь. Возможно ли вообще настроить Yii так, чтобы при изменении *.less-файлов изменения сразу вступали в силу?
Хочу изменить цвета/шрифты/отступы стандартного bootstrap'а и для этого сделал:
  • отредактировал файл \vendor\bower\bootstrap\less\variables.less
  • перезапустил сайт - никаких изменений
  • добавил в \config\web.php код для принудительной конвертации ресурсов

    Код: Выделить всё

    'assetManager' => [
                'converter' => [
                    'forceConvert' => true,
                ],
            ],
  • на всякий случай очистил папку \web\assets
  • перезапустил страницу - НИЧЕГО не изменилось
Предполагаю, что файл bootstrap.css не генерируется из *.less, а подкачивается готовый.
Я новичок, подскажите, пожалуйста, где промах.
andreyrud
Сообщения: 265
Зарегистрирован: 2011.09.26, 14:59

Re: Возможна ли компиляция *.less=>*.css "на лету" посредством Yii

Сообщение andreyrud »

NetBeans или PhpStorm делают это автоматом.
Frostmaind
Сообщения: 20
Зарегистрирован: 2013.03.06, 15:49

Re: Возможна ли компиляция *.less=>*.css "на лету" посредством Yii

Сообщение Frostmaind »

Во первых менять чтото в папке vendor это не правильно.
Во вторых нужно почитать https://github.com/yiisoft/yii2/blob/ma ... е-Ресурсов
Затем в своем site.less заинлкудить бутсраповский less:
@import "../../vendor/bower/bootstrap/less/bootstrap.less";

И дальше можно переопредилять все что захочется:
@brand-success: #00f;
tigr1991
Сообщения: 8
Зарегистрирован: 2015.07.16, 17:59

Re: Возможна ли компиляция *.less=>*.css "на лету" посредством Yii

Сообщение tigr1991 »

Выполнил следующие шаги:
  1. Файл \assets\AppAsset.php имеет запись

    Код: Выделить всё

    ...
     public $css = [
            'css/site.less'
        ];
    ...
  2. В файл site.less добавил строчку

    Код: Выделить всё

    @import "../../vendor/bower/bootstrap/less/bootstrap.less";
  3. Попробовал запустить сайт, вылетела ошибка
  4. В файл \config\web.php в components добавил следующий код

    Код: Выделить всё

    'assetManager' => [
                'converter' => [
                    'class' => 'yii\web\AssetConverter',
                    'commands' => [
                        'less' => ['css', 'lessc {from} {to} --no-color'],
                        'ts' => ['js', 'tsc --out {to} {from}'],
                    ],
                ],
            ],
  5. Перезапустил сайт - снова ошибка :(
  6. Пробовал в components вставлять такой код:

    Код: Выделить всё

    'assetManager' => [
                'converter' => [
                    'forceConvert' => true,
                ]
            ] 
    Не помогло(
Ошибка: Exception – yii\base\Exception
Изображение
Frostmaind
Сообщения: 20
Зарегистрирован: 2013.03.06, 15:49

Re: Возможна ли компиляция *.less=>*.css "на лету" посредством Yii

Сообщение Frostmaind »

4 и 6 пункты не нужно делать
судя по ошибке не стоит компилятор lessc http://lesscss.org/usage/#command-line- ... e-globally
У меня в убунте он ставится одной командой, про виндовс нимогу ничем подсказать
chesar
Сообщения: 514
Зарегистрирован: 2013.04.10, 17:49

Re: Возможна ли компиляция *.less=>*.css "на лету" посредством Yii

Сообщение chesar »

Frostmaind писал(а):Во первых менять чтото в папке vendor это не правильно.
Во вторых нужно почитать https://github.com/yiisoft/yii2/blob/ma ... е-Ресурсов
Затем в своем site.less заинлкудить бутсраповский less:
@import "../../vendor/bower/bootstrap/less/bootstrap.less";

И дальше можно переопредилять все что захочется:
@brand-success: #00f;
И что же это даст?
tigr1991
Сообщения: 8
Зарегистрирован: 2015.07.16, 17:59

Re: Возможна ли компиляция *.less=>*.css "на лету" посредством Yii

Сообщение tigr1991 »

На данный момент сделал такой костыль:
  1. поставил сторонний компилятор WinLess
  2. настроил его на отслеживание изменений в файле \vendor\bower\bootstrap\less\bootstrap.less
  3. настроил автоматическое сохранение в файл \web\assets\7e28eee1\css\bootstrap.css (чтобы сразу видеть изменения), а при реализе скомпилирую уже в файл \vendor\bower\bootstrap\dist\css\bootstrap.css
При использовании такого костыля мои действия для внесения изменений:
  1. Поменять какой-нибудь файл *.less (в PHPstorm сохраняется автоматически)
  2. Поскольку изменения считываются только с \vendor\bower\bootstrap\less\bootstrap.less, перехожу на вкладку этого файла и тупо нажимаю Ctrl+S
  3. Перезапускаю страницу сайта - вуаля, всё сработало!
А как сделать по-человечески? Чтоб алгоритм состоял из двух шагов:
  1. Внёс изменения в *.less
  2. Перезапустил сайт - ГОТОВО!
Очень надеюсь на вашу помощь. У меня на Windows установлен lessc. Устанавливал его через Node.js, но никакие пути не прописывал. Пытался настроить плагин в PHPshtorm, но консоль постоянно выдавала ошибки. Так в какую сторону копать? Неужели всё так запутанно и нет простого решения
bot4343
Сообщения: 28
Зарегистрирован: 2013.07.20, 19:49

Re: Возможна ли компиляция *.less=>*.css "на лету" посредством Yii

Сообщение bot4343 »

У вас в конечном счете получилось реализовать "по-человечески"? Поделитесь опытом.
Ответить