[英]create set of gulp tasks at runtime
我試圖動態地(在運行時)創建一組gulp任務,然后再執行它們。
因此,默認任務在名為createTasks
系列任務中執行,我認為這將在數組tasks
創建所有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)));
怎么了?
gulp.series
是不是期望任務作為單獨的參數,而不是將其全部接收到單個數組參數中?
如果您的安裝程序支持ES 6,則應該可以:
gulp.task('default', gulp.series('createTasks', gulp.series(...tasks)))
;
如果沒有,您可以嘗試以下方法:
gulp.task('default', gulp.series('createTasks', gulp.series.apply(this, tasks)))
無需將createTasks
作為gulp任務。 您只需遍歷任務列表,然后將任務名稱添加到數組中,然后按apply
調用series方法。
// 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));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.