создать множество заданий gulp во время выполнения - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь создать набор задач gulp динамически (во время выполнения) и после этого хочу выполнить их.

Таким образом, задача по умолчанию выполняется в последовательной задаче под названием createTasks, которая, как я думал, создаст все мои задачи в массиве tasks, а затем выполнит функцию, возвращаемую gulp.series(tasks).

К сожалению, это приводит к ошибке:

VM40 assert.js: 42 Uncaught AssertionError: Одна или несколько задач должны быть объединены с использованием последовательных или параллельных

Код выглядит так:

// Gulp 4
var gulp = require('gulp');

var tasks = [];
const fileArray = ['task1', 'task2'];

debugger;
gulp.task('createTasks', function(done) {
for (var key in fileArray)
{
    gulp.task(fileArray[key], function(done) {
        console.log("I was called");
    });
    tasks.push(fileArray[key]);
}});


gulp.task('default', gulp.series('createTasks', gulp.series(tasks)));

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Нет необходимости в createTasks как задание глотка. Вы просто перебираете список задач, добавляете имя задачи в массив и вызываете метод series как apply.

// Gulp 4
var gulp = require('gulp');

var tasks = [];
const fileArray = ['task1', 'task2'];

for (var key in fileArray){
    gulp.task(fileArray[key], function(done) {
        console.log("I was called");
    });
    tasks.push(fileArray[key]);
};


gulp.task('default', gulp.series.apply(this,tasks));
0 голосов
/ 08 ноября 2018

Разве gulp.series не ожидает задачи как отдельные параметры, а не получает их все в одном параметре массива?

Если ваша установка поддерживает ES 6, это должно работать:

gulp.task('default', gulp.series('createTasks', gulp.series(...tasks)));

Если нет, вы можете попробовать это:

gulp.task('default', gulp.series('createTasks', gulp.series.apply(this, tasks)))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...