Условная задача gulp внутри gulp.paralell () или gulp.series () - PullRequest
0 голосов
/ 29 июня 2018

Слишком много информации о задачах условий внутри каналов (например, плагин "gulp-if"). Однако на самом деле это не «условные задачи»: это «условное использование плагинов», и одна задача может использовать несколько плагинов. Вот как условно выполнить задачу НЕ внутри трубы (например, внутри gulp.paralell())

Предположим, что имя задачи может содержать пробелы для обеспечения простого понимания значения задачи.

gulp.task('Build', gulp.paralell(
    'Preprocess HTML',
    'Prepeocess styles',
    done => {
        if(checkSomeCondition()){
            runTask('some Task') // but how?
        }
        else {
            done();
        }
    }
))

1 Ответ

0 голосов
/ 30 июня 2018

Прелесть gulp4.0 в том, что ваши задачи могут быть просто функциями, поэтому работает следующее:

gulp.task('Preprocess HTML', function () {
  console.log("in Preprocess HTML");
  return gulp.src('./');
});

Вы можете использовать либо вышеприведенную версию («старый способ»), либо более новую. намного ниже.

Я показываю здесь две задачи, использующие обе версии, но лично я бы не совмещал их.

// function PreprocessHTML() {
//   console.log("in Preprocess HTML");
//   return gulp.src('./');
// }

function PreprocessStyles() {
  console.log("in Preprocess styles");
  return gulp.src('./');
}

function testTaskTrue() {
  console.log("in testTaskTrue");
  return gulp.src('./');
}

function testTaskFalse() {
  console.log("in testTaskFalse");
  return gulp.src('./');
}

function checkSomeCondition() {
  console.log("in checkSomeCondition");
  return false;
}

//    Again, I definitely wouldn't mix the two versions of tasks as shown below.
//    Just here for demonstration purposes.

gulp.task('test', gulp.parallel( 'Preprocess HTML',  PreprocessStyles,
  done => {
    if (checkSomeCondition()) {

        // so testTaskTrue can be any gulp4.0 task, easy to call since it just a function

      testTaskTrue();
    }
    else {
      testTaskFalse();
    }
    done();
  }
));
...