gulp做爲一自動化構建工具,其採用node.js stream的方式對傳入的文件對象(Vinyl)進行處理,API也很簡單,用起來很好上手。同時,gulp在處理任務時默認都是採用異步的方式處理的,在構建速度上也很快;其豐富的插件系統也能完成服務器搭建、代碼優化、代碼檢查、文件監控及其編譯的功能,想對webpack來說,除了沒有模塊化的功能,其算是一個小而美的構建工具。html
gulp在原理上是處理傳入的文件對象,經過讀取文件的路徑和文件內容,而後採用不一樣的gulp插件對文件進行功能處理;Vinyl的content屬性有三種值,分別爲buffer、stream、null,gulp默認狀況下是讀取buffer類型的文件內容,若是buffer選項設定爲false時則會以stream的形式返回文件內容,咱們須要根據gulp插件處理時須要的文件類型進行對應的處理node
參考文件及擴展:webpack
一、gulp v4.0git
二、解刨gulp中stream pipe 的異行並行坑github
三、vinyl Objectweb