一、關於報錯情景
gulp進入到任務流的時候如果出現錯誤的話,一般來說進程會自動掛掉,要重新啟動任務才能繼續。由此,導致如果任務出錯的話就很麻煩。所以gulp提供了監聽error進行錯誤處理的函數。
二、關於錯誤處理,直接上代碼
//壓縮html等操作但我這里因為是測試,所以只是簡單的復制沒有做處理 gulp.task("html",function(){ return gulp.src("app/**/*.html") .pipe(gulp.dest("app")) .on("error",function(err){ console.log('Less Error!', err.message); this.emit('end'); }) .pipe(webServer.reload()) })
三、重點
如上所示:gulp提供一個on("error",callback)抓取任務報錯,並且。通過回調可打印出error對象。
這里有個非常重要的坑:this.emit(‘end’),之前看了很多博文里都沒有這一步的處理,但是我沒有這一步處理的時候雖然watch進程不會掛了,但是html文件發 生變化時卻不會自動編譯了。所以要加上這個。有很多博文寫了this.end();但至少我試了是沒什么用的;
四、錯誤處理插件
1、gulp錯誤處理插件還是比較多的,最常用的就是gulp-plumber;參考:https://www.cnblogs.com/liangcheng11/p/6894943.html
2、但是個人覺得還不如自定義一個errorhandler函數。如下:
function handler (err){ console.log('Less Error!', err.message); this.emit('end'); } //壓縮html等操作但我這里因為是測試,所以只是簡單的復制沒有做處理 gulp.task("html",function(){ return gulp.src("app/**/*.html") .pipe(gulp.dest("app")) .on("error",handler) .pipe(webServer.reload()) })
