gulp的task顺序执行

我在看gulp的官方网站上的API时,关于gulp.task提到如果为了gulp.task顺序执行,则需要给个提示给gulp让其知道这个任务是依赖另一任务的。关于这段的理解:

gulp.task('one', ['two', 'three', 'four'], function(){

})

1.上面提到的这个顺序执行是指one与后面的Array,还是指Array中的任务列表?
2.如何理解gulp的任务的顺序执行?

阅读 19.3k
3 个回答

gulp.task(name[, deps], fn)
deps中的任务会在name之前执行,而deps里面的所有任务默认是最大限度的并行执行。

让任务按特定顺序执行,需要做两件事:

  • 给gulp一个提示。
  • 告诉gulp这个任务依赖与另一个任务。

这里的提示又有3种

  • 可以选择接收一个回调函数,然后在任务执行完毕后调用它。
  • 返回一个promise对象,然后由gulp等待promise被处理(resolve).
  • 返回一个数据流(stream),等待数据流(stream)结束。

任务依赖与另一个任务

gulp.task('two', ['one'], function() {
    // task 'one' is done now
});

像这样,就说明任务two依赖与任务one

最后,在default任务里就会先执行one接着是two然后是default

gulp.task('default', ['one', 'two']);

至于怎么设置回调、返回promise对象和返回一个数据流(stream),请看文档,这里不重复。
http://www.gulpjs.com.cn/docs/api/#gulp.task

官方文档解释的比较清楚。 An array of tasks to be executed and completed before your task will run.

需要注意的是 你的 two , three 必须按照文档。 Accept a callback 或者 Return a stream 或者 Return a promise。

但是 你依赖的几个任务是没有先后顺序的。就是说 two, three 这些谁先完成看工作量。

先执行依赖任务,再执行自己的任务。

这个你可以输出一些参数就可以测试出来了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏