如何从字符串数组构造 gulp.parallel() ?
How can I constuct gulp.parallel() from an array of string?
如何使用字符串数组构造 gulp.parallel()
?
我希望能够动态创建函数并将它们导出为 gulp 任务。这些函数的名称存储在名为 ts
的数组中。我希望能够创建一个 gulp.parallel
来调用所有动态函数?
如何使用字符串数组构造 gulp.parallel()
?
我尝试了以下方法,但没有用。
// This will call the "mainTask" first, then call all the dynamic tasks
exports.allTasks = series(mainTask, () => gulp.parallel(ts));
我也试过了
function all(cb) {
var ts = ['task1', 'task2','task3']; // This array is generated dynamicly so I don't know the task* names until runtime.
return gulp.parallel(...ts, (seriesDone) => {
seriesDone();
cb();
});
}
exports.allTasks = series(mainTask, all);
但是 all
没有调用 ts
数组中列出的方法。
我知道我应该可以调用 gulp.parallel('task1','task2','task3');
但不确定如何使用数组进行这样的调用。
这对我有用:
const gulp = require('gulp');
function task1(cb) {
console.log("in task1");
cb();
};
function task2(cb) {
console.log("in task2");
cb();
};
function task3(cb) {
console.log("in task3");
cb();
};
function mainTask(cb) {
console.log("in mainTask");
cb();
}
const ts = [];
ts.push(task1, task2, task3); // or in the all function as you had it
// not pushing strings, but function references
function all(cb) {
// var ts = [task1, task2, task3]; // function names aren't strings in gulp.parallel
gulp.parallel(...ts, (seriesDone) => {
seriesDone();
// cb();
})(); // () needs to be here to work
cb();
}
exports.allTasks = gulp.series(mainTask, all);
输出:
[20:54:07] Using gulpfile ~\OneDrive\Test Bed\taskArray\gulpfile.js
[20:54:07] Starting 'allTasks'...
[20:54:07] Starting 'mainTask'...
in mainTask
[20:54:07] Finished 'mainTask' after 3.44 ms
[20:54:07] Starting 'all'...
[20:54:07] Starting 'task1'...
[20:54:07] Starting 'task2'...
[20:54:07] Starting 'task3'...
[20:54:07] Starting '<anonymous>'...
[20:54:07] Finished 'all' after 4.23 ms
[20:54:07] Finished 'allTasks' after 15 ms
in task1
[20:54:07] Finished 'task1' after 17 ms
in task2
[20:54:07] Finished 'task2' after 19 ms
in task3
[20:54:07] Finished 'task3' after 30 ms
[20:54:07] Finished '<anonymous>' after 31 ms
如何使用字符串数组构造 gulp.parallel()
?
我希望能够动态创建函数并将它们导出为 gulp 任务。这些函数的名称存储在名为 ts
的数组中。我希望能够创建一个 gulp.parallel
来调用所有动态函数?
如何使用字符串数组构造 gulp.parallel()
?
我尝试了以下方法,但没有用。
// This will call the "mainTask" first, then call all the dynamic tasks
exports.allTasks = series(mainTask, () => gulp.parallel(ts));
我也试过了
function all(cb) {
var ts = ['task1', 'task2','task3']; // This array is generated dynamicly so I don't know the task* names until runtime.
return gulp.parallel(...ts, (seriesDone) => {
seriesDone();
cb();
});
}
exports.allTasks = series(mainTask, all);
但是 all
没有调用 ts
数组中列出的方法。
我知道我应该可以调用 gulp.parallel('task1','task2','task3');
但不确定如何使用数组进行这样的调用。
这对我有用:
const gulp = require('gulp');
function task1(cb) {
console.log("in task1");
cb();
};
function task2(cb) {
console.log("in task2");
cb();
};
function task3(cb) {
console.log("in task3");
cb();
};
function mainTask(cb) {
console.log("in mainTask");
cb();
}
const ts = [];
ts.push(task1, task2, task3); // or in the all function as you had it
// not pushing strings, but function references
function all(cb) {
// var ts = [task1, task2, task3]; // function names aren't strings in gulp.parallel
gulp.parallel(...ts, (seriesDone) => {
seriesDone();
// cb();
})(); // () needs to be here to work
cb();
}
exports.allTasks = gulp.series(mainTask, all);
输出:
[20:54:07] Using gulpfile ~\OneDrive\Test Bed\taskArray\gulpfile.js
[20:54:07] Starting 'allTasks'...
[20:54:07] Starting 'mainTask'...
in mainTask
[20:54:07] Finished 'mainTask' after 3.44 ms
[20:54:07] Starting 'all'...
[20:54:07] Starting 'task1'...
[20:54:07] Starting 'task2'...
[20:54:07] Starting 'task3'...
[20:54:07] Starting '<anonymous>'...
[20:54:07] Finished 'all' after 4.23 ms
[20:54:07] Finished 'allTasks' after 15 ms
in task1
[20:54:07] Finished 'task1' after 17 ms
in task2
[20:54:07] Finished 'task2' after 19 ms
in task3
[20:54:07] Finished 'task3' after 30 ms
[20:54:07] Finished '<anonymous>' after 31 ms