2017-01-30 4 views
0

У меня есть динамически создаваемые задачи gulp, которые отлично работают. но выполнение задач путем передачи массива в gulp.series() или gulp.parallel() не работает.с использованием массивов в gulp.series() или gulp.parallel()

IMHO это должно работать в соответствии с документацией:
https://gulp.readme.io/docs/gulpseriestasks
https://gulp.readme.io/docs/gulpparalleltasks

это упрощенная версия того, что я пытаюсь сделать:

var tasks = ['clean', 'build', 'images']; 
gulp.task('main', gulp.series('init', tasks)); 

'init' запускается на выполнение без проблем, но кажется, что tasks просто игнорируется.

любая идея, как я могу использовать массив taks внутри gulp.series() или gulp.parallel()?

обновление:Я использую глоток 4.0.0-alpha.2

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

благодарит за любую помощь!

ответ

1

Похоже, эти методы ожидают многочисленные задачи, которые будут переданы в качестве аргументов, так что вы могли бы назвать apply на них и передать массив:

gulp.task('main', gulp.series.apply(gulp, ['clean', 'build', 'images'])) 

(Отказ от ответственности: я не проверял это сам)

* Редактировать *

Хорошо, я понимаю, что вы делаете. Вы должны передать либо строку, функцию или массив. Вы не можете смешивать и сопоставлять.

Так что вы, вероятно, хотите сделать это:

var tasks = ['clean', 'build', 'images']; 
gulp.task('main', gulp.series(['init'].concat(tasks))); 

Или, используя спред массива оператора:

var tasks = ['clean', 'build', 'images']; 
gulp.task('main', gulp.series(['init', ...tasks])); 
+0

спасибо за ваш ответ - но, как я только что узнал, мой код работает нормально , содержимое массива было асинхронно сгенерировано и пустое «время компиляции». похоже, что gulp «прекомпилирует» задачи - потому что когда я отлаживал свой массив с анонимной функцией, контент был там, но на самом деле он никогда не «вводился» в задачу. –