Ответы пользователя по тегу Gulp.js
  • Как досрочно, по условию завершить task, не прибив при этом watch?

    @fayster
    Как вариант можно сделать так:
    const through2 = require('through2').obj;
    
    gulp.task('jade', function (callback) {
      return gulp.src(config.src.jade)
      .pipe(plumber())
      .pipe(jade({
        pretty: true // Комментарии и отформатированный код.
      }))
      .pipe(gulp.dest(config.dev.html))
      .pipe(gulpif(!isDevelopment, htmlmin({
        collapseWhitespace: true,
        removeComments: true
      })
      .pipe(through2((file, enc, cb) => {
        if (isDevelopment) { // задаем условие
    	   callback(); // выходим из таска
        } else {
    	   cb(null, file); // передаем файлы дальше в поток
        }
      }))
      .pipe(gulp.dest(config.prod.html)) 
    })
    Ответ написан
  • Как с помощью Gulp запустить несколько одинаковых тасков с разными параметрами?

    @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);
    });
    Ответ написан
    Комментировать