2015-06-03 13 views
7

So habe ich diese nette gulpfile und alle, und es funktioniert reibungslos bis auf diese eine Sache.Watch Aufgabe nicht fortgesetzt, nachdem Fehler von Gulp-Klempner behoben wurde trotz errorHandler Callback

Ich lasse gulp-plumber laufen, um zu stoppen, die Uhraufgabe auf einem Fehler abzustürzen, der Fehler wird davon gefangen, aber dann, wenn ich den Fehler behebe, verweigern die Beobachter, um fortzufahren. Ich fügte die handleError Rückruf hinzu, aber es scheint nichts zu tun, obwohl this article sagt, dass es sollte. Das treibt mich in den Wahnsinn, weil ich Leute kenne, die es funktionieren lassen, aber keine der Lösungen, die ich gefunden habe, scheint zu funktionieren. Habe ich etwas verpasst?

EDIT: Wenn ich einen Fehler in _lists.scss zum Beispiel der Fehler wie folgt geworfen Aussehen:

[22:04:43] Plumber found unhandled error: 
Error in plugin 'gulp-sass' 
Message: 
styles\partials\_lists.scss 
1:1 invalid top-level expression 

Dies bedeutet, dass ich auch den Fehler behandeln on.('error', function() {}) manuell mit? Weil ich dachte, dies sei Klempner-Zweck, um die manuelle Fehlerbehandlung zu entfernen. Ich habe sogar versucht, den Fehler manuell zu erfassen, aber es spuckte nur den Fehler in der Konsole aus und weigerte sich, wie zuvor fortzufahren.

Hier ist der Klempner Rohrteil:

// Compile our SCSS into minified CSS 
gulp.task('styles', function() { 
    return gulp.src('styles/main.scss') 
    .pipe(plumber({ 
     handleError: function (err) { 
     console.log(err); 
     this.emit('end'); 
     } 
    })) 
    .pipe(sass({ style: 'expanded' })) 
    .pipe(autoprefixer('last 2 version', 'safari 5', 'ie 8', 'ie 9', 'opera 12.1', 'ios 6', 'android 4')) 
    .pipe(gulp.dest('dist/styles')) 
    .pipe(rename({ suffix: '.min' })) 
    .pipe(minifycss()) 
    .pipe(gulp.dest('dist/styles')) 
    .pipe(notify({ message: 'Finished compiling SCSS' })) 
}); 

Und hier ist das ganze gulpfile.js:

var gulp   = require('gulp'), 
    sass   = require('gulp-sass'), 
    autoprefixer = require('gulp-autoprefixer'), 
    minifycss = require('gulp-minify-css'), 
    plumber  = require('gulp-plumber'), 
    jshint  = require('gulp-jshint'), 
    uglify  = require('gulp-uglify'), 
    imagemin  = require('gulp-imagemin'), 
    rename  = require('gulp-rename'), 
    concat  = require('gulp-concat'), 
    notify  = require('gulp-notify'), 
    cache  = require('gulp-cache'), 
    livereload = require('gulp-livereload'), 
    htmlmin  = require('gulp-htmlmin'), 
    del   = require('del'); 

// Minify our HTML 
gulp.task('html', function() { 
    return gulp.src('*.html') 
    .pipe(htmlmin({ collapseWhitespace: true })) 
    .pipe(gulp.dest('dist')) 
}); 

// Compile our SCSS into minified CSS 
gulp.task('styles', function() { 
    return gulp.src('styles/main.scss') 
    .pipe(plumber({ 
     handleError: function (err) { 
     console.log(err); 
     this.emit('end'); 
     } 
    })) 
    .pipe(sass({ style: 'expanded' })) 
    .pipe(autoprefixer('last 2 version', 'safari 5', 'ie 8', 'ie 9', 'opera 12.1', 'ios 6', 'android 4')) 
    .pipe(gulp.dest('dist/styles')) 
    .pipe(rename({ suffix: '.min' })) 
    .pipe(minifycss()) 
    .pipe(gulp.dest('dist/styles')) 
    .pipe(notify({ message: 'Finished compiling SCSS' })) 
}); 

// Concat and compile our JS into a minified file 
gulp.task('scripts', function() { 
    return gulp.src('scripts/**/*.js') 
    .pipe(jshint()) 
    .pipe(jshint.reporter('default')) 
    .pipe(concat('main.js')) 
    .pipe(gulp.dest('dist/scripts')) 
    .pipe(rename({ suffix: '.min' })) 
    .pipe(uglify()) 
    .pipe(gulp.dest('dist/scripts')) 
    .pipe(notify({ message: 'Finished compiling scripts' })); 
}); 

// Compress our images 
gulp.task('images', function() { 
    return gulp.src('images/**/*.js') 
    .pipe(cache(imagemin({ optimizationLevel: 5, progressive: true, interlaced: true }))) 
    .pipe(gulp.dest('dist/images')) 
    .pipe(notify({ message: 'Finished compiling images' })); 
}); 

// Clean/empty our dist folder 
gulp.task('clean', function(cb) { 
    del(['dist/styles', 'dist/scripts', 'dist/images'], cb) 
}); 

// Run all our tasks when using 'gulp' command in CLI 
gulp.task('default', ['clean'], function() { 
    gulp.start('html', 'styles', 'scripts', 'images'); 
}); 

// Watch our files for changes 
gulp.task('watch', function() { 
    gulp.watch('styles/**/*.scss', ['styles']); 
    gulp.watch('scripts/**/*.js', ['scripts']); 
    gulp.watch('images/**/*', ['images']); 
}); 

Antwort

7

Es könnte nur ein Tippfehler sein.

Versuchen Sie, handleError durch errorHandler zu ersetzen.

+0

Das gleiche Problem hier, sieht aus wie es in diesem Commit geändert wurde: https://github.com/floatdrop/gulp-plumber/commit/49b5312e5653c9b3eedfdd488a088722bccc8925 – cloying

0

Genau das gleiche Problem, gerade hat es geklappt. Der Charme ist hinzuzufügen

this.emit('end');

am Ende Ihres Handlers, um die Aufgabe ordnungsgemäß zu beenden.