Как с помощью Gulp запустить несколько одинаковых тасков с разными параметрами?

Например, у проекта есть несколько тем, использующих общие файлы .sass. При изменении общего файла, надо пересобирать все CSS тем (использую gulp-sass).
Есть таск build и каждую тему могу собрать по отдельности с параметром (с помощью yargs)

gulp build --theme theme1
gulp build --theme theme2
gulp build --theme theme3
...


Вопрос - как одним таском запустить параллельную сборку ВСЕХ тем? Очень желательно, чтобы отладочные сообщения каждого задания выводились не вперемешку общей кучей, а отдельно (например, после окончания сборки).
  • Вопрос задан
  • 376 просмотров
Пригласить эксперта
Ответы на вопрос 1
@fayster
Можно попробовать использовать промисы. Суть: есть таск build, который работает по сути также как и раньше у вас работал, но при этом еще добавился таск build:themes, который принимает массив тем (тут либо задать вручную либо парсить папку с темами и получить список путей) и после сборки всех тем, можно уже вывести отладочную информацию.
function build(theme) {
    return new Promise(function(resolve) {
        gulp.src([theme])
        ...
        resolve();
    });
}

var themeList = []; // Список стилей
gulp.task('build:themes', function() {
    return Promise.all(themeList.map(function(theme) {
        return build(theme);
    })).then(function() {
        // Отработает после того, как завершится сборка всех стилей
    });
});

gulp.task('build', function() {
    var theme =  'src/styles/' + (util.env.theme ? util.env.theme : 'main') + '.scss';
    build(theme);
});
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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