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")
}));

主要要知道當依賴是異步任務時的處理。(沒有解決

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