2014-03-12 6 views
11

Meine Schluck-Datei gibt keine Fehler auf entweder Standard-Gulp-Methoden wie gulp.src() mit nicht existierenden Pfaden noch werden Stream-Fehler von ihrem Handler aufgerufen. Ich habe eine einfache Datei eingeschlossen, die stillschweigend fehlschlägt, nur die beginnenden .. und fertigen .. Standardnachrichten druckend.Schluck stumm gescheitert - keine Fehler auf Konsole gedruckt

var // 
    gulp  = require("gulp"), 
    gulpUtil = require("gulp-util"), 
    sass  = require("gulp-ruby-sass"); 


gulp.task("default", function() { 
    gulp.src("path-that-does-not-exist.scss") 
    .pipe(sass()) 
    .on("error", function(err) { 
    console.log("this should print"); 
    }) 
    .pipe(gulp.dest("./client-side/public/compiled")); 
}); 
+0

Wenn die Datei nicht existiert, dann wird der Strom einfach nicht verarbeitet. Ich bin mir nicht sicher, was Sie hier erwarten. – OverZealous

+0

Vermutlich möchten Sie herausfinden, ob der Pfad existiert, oder nicht? Wenn nicht beim Ereignis "error", dann ein anderes Ereignis. – greim

+0

Sie können ein Flag auf die Aufgabe, z. anyData = false; setze es dann auf wahr innerhalb der Kette und schaue dann in .on ('end', function() {}) nach, ob es gesetzt wurde. Wenn nicht, dann einen Fehler melden. Es ist ein wenig hacky, und Sie könnten nur überprüfen möchten, ob die Datei mit fs :) –

Antwort

29

Okay, so funktioniert Gulp "richtig". Aber was ich in Ihrer Frage höre ist, dass es nett wäre, wenn Gulp Ihnen nur sagen könnte, wenn eine Datei nicht existiert.

Ich benutze gulp-expect-file als solche

var coffee = require('gulp-coffee'); 
var expect = require('gulp-expect-file'); 

gulp.task('mytask', function() { 
    var files = ['idontexist.html']; 

    return gulp.src(files) 
    .pipe(expect(files)) 
    .pipe(coffee()); 
}); 

Jetzt werden Sie diese im Terminal sehen:

example output

+0

Beachten Sie, dass es Schluck nicht daran hindert weiterzumachen, also schauen Sie sich die Konsole an! – Sebastien

4

Wenn der Pfad nicht existiert gulp.src erfolgreich schiebt genau nichts durch das Rohr werden die Sass und dest Aufgaben erfolgreich nie genannt wird, und mit dem, gulp.src Stream Enden, Aufgabe der Standardsignalisierung ist vervollständigen und Schluck-Ausgänge. Es hat genau das getan, was Sie ihm gesagt haben. : D

2

Ich stimme mit @adamjgrant Verwendung gulp-expect-file.

var expect = require('gulp-expect-file'), 
    gulp = require('gulp'); 

gulp.task('task', function() { 
    var files = ['src/js/*.js']; 
    gulp 
     .src(files) 
     .pipe(expect(files)); 
}); 

PS: Grunt.js behandelt dies mit nonull:true

lint: { 
    src: ['gruntfile.js', 'gulpfile.js'], 
    nonull: true 
}