簡體   English   中英

在運行時創建一組gulp任務

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM