我可以使用Gulp 4以串行方式运行任务吗?

时间:2016-04-18 07:45:08

标签: gulp

我的代码目前使用run-sequence来运行一系列任务。根据我的说法,我现在可以使用本地Gulp 4进行​​此操作。有人可以确认这是否可行,如果是这样,建议我如何做到这一点。

var runSequence = require('run-sequence');

gulp.task('make-prod-ex1', function () {
    makeAppHtml('app/**/*ex1', function () {
        runSequence(
          'makeTemplate',
          'clean-css',
          'make-css-files',
          'make-css-bundle',
          'rename-css-bundle',
          'clean-js',
          'make-js-bundle',
          'rename-js-bundle',
          'rename-index',
          function () {
              console.log("Completed");
          });
    });
});

1 个答案:

答案 0 :(得分:2)

在Gulp 4.0中gulp.series()gulp.parallel()完全取代了Gulp 3.x中使用的任务依赖机制。这意味着你不能再写gulp.task('task1', ['task2'])之类的东西了。

您现在必须通过撰写gulp.series()gulp.parallel()调用来明确定义执行顺序,而不是告诉Gulp哪些任务相互依赖并让Gulp根据依赖关系图决定执行顺序。两者都可以接受任务名称以及函数并返回函数本身:

gulp.task('make-prod-ex1', gulp.series(
    function(done) {
        makeAppHtml('app/**/*ex1', done);
    }, 
    'makeTemplate',
    'clean-css',
    'make-css-files',
    'make-css-bundle',
    'rename-css-bundle',
    'clean-js',
    'make-js-bundle',
    'rename-js-bundle',
    'rename-index',
     function (done) {
        console.log("Completed");
        done();
     }));

像往常一样,您必须确保通过调用done回调或在任务/函数中返回流来发出异步终止信号。根据个人经验,Gulp 4.0似乎比Gulp 3.x更快地抱怨这个。