經與gulp-plumber
一個問題,因爲它在一個錯誤擲傷了我的構建。吞嚥水管工拋出錯誤,然後停止建立。
例如,我使用無效語法(如padding-left:woah-err
)對我的scss
進行了更改。水管工通知我錯誤的終端。然後,我回到scss
文件進行更改padding-left:20px;
保存,並得到在終端沒有響應,它看起來像我的一飲而盡構建壞了......要解決我柄重啓一飲而盡。
但是,如果我將this.emit('end');
更改爲this.emit();
,則在我的吞嚥文件中,構建不會中斷,但不會再發生錯誤的水暖工通知。
展望改變了我的路我配置我的管道工得到這個工作的權利。有什麼建議麼?這看起來像good solution。
這裏是我的包
var gulp = require('gulp'),
fs = require('fs'),
gulpif = require('gulp-if'), // condtionally run task
plumber = require('gulp-plumber'), // prevent pipe breaking
browserSync = require('browser-sync').create(),
bower = require('gulp-bower'), // gulp bower
concat = require('gulp-concat'), // concat files
cssmin = require('gulp-minify-css'), // minify css
rename = require('gulp-rename'), // rename file
runSequence = require('run-sequence'), // runs gulp tasks in order
sass = require('gulp-sass'), // css preprocessor
uglify = require('gulp-uglify'); // minify js
這是我的風格的任務(必須有人幫助我處理這件事了)..可能要重新考慮它的結構。開放的建議
// Styles Task
gulp.task('styles', function(){
// streamError is set to false
var streamError = false;
return gulp.src(paths.source.styles)
.pipe(plumber({
// plumber finds errors in stream
errorHandeler:function(error){
streamError = error;
// plumber logs errors to console and terminal
console.log(streamError.message);
browserSync.notify(streamError.message,errorTimeout);
this.emit('end');
}
}))
.pipe(sass())
// compile sass
.pipe(gulp.dest(paths.destination.styles))
// if the streamError is NOT false reload browser
.pipe(gulpif(!streamError,browserSync.reload({stream:true})))
.pipe(cssmin()) // min css
.pipe(rename({ // rename file to site.min.css
suffix:'.min'
}))
.pipe(gulp.dest(paths.destination.styles))
// if streamError is not `false` reload browser
.pipe(gulpif(!streamError,browserSync.reload({stream:true})));
});