2017-06-15 26 views
0

如何按顺序运行多个节点流(由gulp生成)?以编程方式运行多个gulp4任务

让我们假设一个简单的gulpfile有两个不同的任务:

var gulp = require("gulp"); 

gulp.task("do1", function() { 
    return gulp.src("./test/*") 
      .pipe(gulp.dest("./dest/")); 
}); 

gulp.task("do2", function() { 
    return gulp.src("./dest/*") 
      .pipe(gulp.dest("./final/")); 
}); 

gulp.task("default", gulp.series("do1", "do2")); 

我想出什么了到目前为止:

var gulp = require("gulp"); 

function do1() { 
    return gulp.src("./test/*") 
      .pipe(gulp.dest("./dest/")); 
} 

function do2() { 
    return gulp.src("./dest/*") 
      .pipe(gulp.dest("./final/")); 
} 

gulp.task("do1", function() { 
    return do1(); 
}); 

gulp.task("do2", function() { 
    return do2(); 
}); 

gulp.task("default", gulp.series("do1", "do2")); 

// ... 
// somewhere else in the same file, with some preconditions ... 
do1().on("finish", do2); 

事实上,这是在为这个简单的例子,但有一个更方便/优雅的方式?特别是对于更长的依赖链。也许一个解决方案使用gulp.series并执行整个系列?从一饮而尽任务编程并不:

回答

0

咕嘟咕嘟任务可以互相依赖(https://github.com/gulpjs/gulp/blob/master/docs/API.md#gulptaskname--deps--fn):

var gulp = require("gulp"); 

gulp.task("do1", function() { 
    return gulp.src("./test/*") 
      .pipe(gulp.dest("./dest/")); 
}); 

gulp.task("do2", function() { 
    return gulp.src("./dest/*") 
      .pipe(gulp.dest("./final/")); 
}); 

gulp.task("do3", ["do1", "do2"], function() { 
    console.log("Tasks do1 and do2 are finished"); 
}); 

gulp.task("default", ["do3"], function() { 
    console.log("All default tasks are finished"); 
}); 
+0

第一件事:gulp4,第二件事情。你会是对的,我可以执行'gulp.run(“default”);'但是我们已经废弃了gulp 4. – Markus

+0

对不起,我的错! – vsenko

+0

没问题,无论如何感谢您的努力:-) – Markus