javascript - 如何从字符串数组构造 gulp.parallel()?
问题描述
如何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
推荐阅读
- flutter - “onError”处理程序无法返回“Null”类型的值
- php - Laravel 数据透视表与附加模型
- c++ - 为什么 C++ 中的函数没有 constexpr 参数?
- django - 多个用户使用 django-allauth 注册。两个注册表单未呈现
- ruby-on-rails - 默认 form_with 不远程也不期望通过 JS 响应
- angular - RxJS Angular - 将 Observable 的对象属性作为 Observable 传递
- c# - Blazor,将 0 值绑定属性填充为输入中的空字符串
- kotlin - 如何使用 mockito_kotlin 存根具有通用 KClass 参数的 Kotlin 方法?
- java - 跟踪企业中使用自定义 java 功能的用户数量
- javascript - 如何使浏览器后退按钮跳过内页导航并返回上一页