4.gulp.task()

gulp.task()用来定义任务,内部使用的是Orchestrator.
任务task任务分为两种,**public(公开的)**或者 **private(私有的)**类型的。
公开任务:从gulpfile中被导出export,可以通过gulp命令直接调用
私有任务:被设计为在内部使用,通常作为series()或parallel()组合的组成部分。
gulp.task(name[, deps], fn)
name : 为任务名
deps :当前定义的任务需要依赖的其他任务,为一个数组。当前定义的任务会在所有依赖的任务执行完毕后才开始执行。如果没有依赖,则省略这个参数。
fn:为任务函数,我们把任务要执行的代码都写在里面。该参数也是可选的。

gulp.task("myTask",['array','of','task','names'],function () {//定义一个有依赖的任务

});

gulp.task()这个API没有什么好讲的,但需要知道执行多个任务时,怎么来控制任务执行的顺序。
gulp中执行多个任务,可以通过任务依赖来实现。例如我想要执行"one",“two”,"three"这三个任务,那我们就可以定义一个空的任务,然后把那三个任务当作这个空的任务的依赖就可以了。

//只要执行default任务,就相当于把'one','two','three'这三个任务执行了
gulp.task("default",['one','two','three']);

如果任务之间没有依赖,任务会按你书写的顺序执行,如果有依赖的话则会先执行依赖的任务。
但是如果某个任务所依赖的任务是异步的,就要注意了,gulp并不会等到那个所依赖的异步任务完成,而是接着执行后续的任务。例如:

var gulp = require('gulp');
var { series } = require('gulp');

gulp.task('one',async ()=>{
    setTimeout(()=>{
        console.log("one is done")
    },5000)
});

//two任务虽然依赖于one任务,但并不会等到one任务中的异步操作完成后再执行
gulp.task('two',gulp.series('one',async () => {
    await console.log("two is done")
}));

主要要知道当依赖是异步任务时的处理。(没有解决

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章