Laravel Elixir Gulp смешивает два отдельных файла less

В Laravel 5 я пытаюсь создать два разных файла css для моего внешнего сайта и внутреннего сайта (cms). Исходные файлы находятся в двух разных каталогах.

Значение по умолчанию для активов в

сначала серверная часть

elixir.config.assetsDir = 'resources/backend/';

elixir(function (mix) {
    mix.less('backend.less');
});

Второй интерфейс

elixir.config.assetsDir = 'resources/frontend/';

elixir(function (mix) {
    mix.less('frontend.less');
});

Оба находятся в одном файле gulpfile.js.

Это каталоги (Laravel 5)

resources
    backend
        less
            backend.less
    frontend
        less
            frontend.less

Только файл внешнего интерфейса компилируется в public/css/frontend.css.

я тоже пробовал

mix.less('frontend.less', null, 'resources/frontend/');

хотя это работает для микширования файлов сценариев, это не работает для микширования меньшего количества файлов.

**Обновление от 28 марта 2015 г. **

Кажется, у моей проблемы нет решения. Когда я делаю:

elixir.config.assetsDir = 'resources/frontend/';
mix.less('frontend.less');

elixir.config.assetsDir = 'resources/backend/';
mix.less('backend.less');

Выполняется только последний (бэкенд). Когда я помещаю последние две строки в комментарии, выполняется первая (frontend). На данный момент все в порядке, потому что стили бэкенда не должны меняться очень часто, но было бы очень неплохо смешать несколько меньше файлов из нескольких папок ресурсов в несколько папок назначения.


person Klaaz    schedule 25.03.2015    source источник
comment
Спасибо, elixir.config.assetsDir помог мне!   -  person pascalvgemert    schedule 22.05.2015


Ответы (4)


Пытаться:

elixir(function(mix) {
    mix.less([
        'frontend/frontend.less',
        'backend/backend.less'
    ], null, './resources');
});
person JeffreyWay    schedule 27.03.2015
comment
Привет, Джеффри, спасибо, но в моем примере это не работает. Я думаю, что это как-то связано с разными папками ресурсов. Жаль, что elixir не принимает два вызова mix.less. - person Klaaz; 28.03.2015

Вместо вашего варианта:

elixir(function(mix) {
    elixir.config.assetsDir = 'resources/frontend/';
    mix.less('frontend.less');

    elixir.config.assetsDir = 'resources/backend/';
    mix.less('backend.less');
});

Попробуйте этот код:

elixir.config.assetsDir = 'resources/frontend/';
elixir(function(mix) {
    mix.less('frontend.less');
});

elixir.config.assetsDir = 'resources/backend/';
elixir(function(mix) {
    mix.less('backend.less');
});
person ont.rif    schedule 04.06.2015

Я играл с этим пару дней, и лучший вариант, который я нашел, выглядит следующим образом.

Сначала оставьте файлы ресурсов в расположении по умолчанию, чтобы найти меньше файлов в resources/assets/less. Затем, чтобы разделить файлы на ваши внешние и внутренние ресурсы, добавьте подпапки в конкретную папку ресурсов, например, так:

resources/assets/less/frontend/frontend.less
resources/assets/less/backend/backend.less

Теперь назовите каждого так ..

    mix.less('frontend/frontend.less', 'public/css/frontend/frontend.css');
    mix.less('backend/backend.less', 'public/css/backend/backend.css');

Второй параметр, предоставленный каждому mix.less, может указывать на то, куда вы хотите.

Вы не можете разделить на самом высоком уровне непосредственно в корне ресурса, но это все же позволяет некоторое разделение, и все компилируется одним глотком.

person Orillian    schedule 28.07.2015

Я нашел следующее для работы:

elixir(function (mix) {

    mix
      .less(['app.less'], 'public/css/app.css')
      .less(['bootstrap.less'], 'public/css/bootstrap.css');

});

Ключевые вещи, на которые следует обратить внимание:

  • укажите имя файла в месте назначения, т.е. напишите public/css/app.css вместо public/css/
  • объединить вызовы .less вместо двух отдельных вызовов mix.less()

У меня работает с версией laravel-elixir 3.4.2

person timetowonder    schedule 04.11.2015