GulpJs没有冻结的错误处理

时间:2014-05-13 07:22:21

标签: javascript gulp build-system

我试图将我的sass转换为css以及其他一些东西。如果出现错误,我在处理sass转换时遇到问题。我可以让它告诉我,但它然后挂起,我必须重新gulp。我错过了这里和那里的类型,我虔诚地ctrl + s所以当我发生崩溃的每一个错字时,它真的很烦人。这就是我所拥有的:

gulp.task('default', function () {
    var sassSrc = './src/scss/*.scss',
        sassDst = './build/css',
        htmlSrc = './src/*.html',
        htmlDst = './build';

gulp.src(sassSrc, {unpipeOnError: false})
    .pipe(watch(function(files) {
        return files.pipe(plumber())
            .pipe(sass())
            .on("error", notify.onError())
            .pipe(prefix("last 3 version", "> 1%", 'safari 5', 'ie 8', 'ie 9', 'opera 12.1', 'ios 6', "Android 4"))
            .pipe(minifyCSS())
            .pipe(gulp.dest(sassDst))
            .pipe(notify({ message: 'Styles task complete' }));
    }));

    gulp.src(htmlSrc)
    .pipe(watch(function(files) {
        return files.pipe(minifyHTML())
            .pipe(gulp.dest(htmlDst));
    }));
});

2 个答案:

答案 0 :(得分:2)

尝试使用Node中的EventEmitter类。而不是直接传递notify.onError(),也会发出end事件。将相关代码更改为以下块:

.on('error', function() {
    notify.onError().apply(this, arguments);
    this.emit('end');
})

gulp-watch应继续响应更改,即使出现错误也是如此。希望这有帮助!

答案 1 :(得分:1)

Josh Clayton的回答实际上对我没有用,但我发现了一个类似的问题确实解决了我的问题。就在这里:Gulp-sass error with notify