2016-07-08 2 views
1

ich, dass lästige dest.on Fehler immer auf meine schluck Aufgabe für Optimierung Bilder mit gulp-imagemin. Ich habe einen etwas ungewöhnlichen Aufbau, der hier geht, mit gulp-load-plugins, um alle meine Aufgaben getrennt von der eigentlichen gulpfile zu haben.Gulp dest.on ist keine Funktion

Auf der Aufgabe in Frage, die ich bin erforderlich:

"gulp-imagemin": "^3.0.1", 
"gulp-util": "^3.0.7", 

Und die Idee ist es, eine Nachricht zu protokollieren, wenn die Bilder für jeden der Ströme fertig sind, gulp.dest() scheint nicht etwas zu mögen über meine gutil.log() Methode:

module.exports = function(gulp, plugins, config) { 

    return function() 
    { 
    var stream = 
     // Optimize Images for Version A // 
     gulp.src(config.assetsDir + '/a/images/*') 
      .pipe(plugins.util.log('Hello')) 
      .pipe(plugins.imagemin({ 
       progressive: true, 
       optimizationLevel: 7, 
       svgoPlugins: [{removeViewBox: false}], 
       use: [plugins.pngquant()] 
      })) 
      .pipe(gulp.dest(config.publicDir + 'images/a/')) 

     // Optimize Images for Version B // 
     gulp.src(config.assetsDir + '/b/images/*') 
      .pipe(plugins.imagemin({ 
       progressive: true, 
       optimizationLevel: 7, 
       svgoPlugins: [{removeViewBox: false}], 
       use: [plugins.pngquant()] 
      })) 
      .pipe(gulp.dest(config.publicDir + 'images/b/')) 
      .pipe(plugins.util.log("Task Done!")) 
    } 
}; 

Das Problem in der letzten Zeile, dort zu sein scheint, ich bin für gutil in der Abhängigkeit Senden durch meine Plugins Objekt und verweist sie dann und nannte es ist log() Meth od. Es funktioniert ohne das Protokoll, was fehlt mir hier?

Antwort

2

Dinge wie gulp.dest() und Plugins wie imagemin() zurück stream.Transform objects. Nur diejenigen, die Sie an .pipe() übergeben können.

gutil.log() auf der anderen Seite gibt keine stream.Transform zurück und kann daher nicht an .pipe() weitergegeben werden.

Wenn Sie es noch aus einem Strom verwenden möchten Sie für eines der Ereignisse zu hören, die von node.js streams ausgesetzt sind, zum Beispiel die 'data' event (für jede Datei mit dem Namen):

gulp.src(config.assetsDir + '/a/images/*') 
    .on('data', function() { plugins.util.log('Hello'); }) 

Or die 'end' event (aufgerufen, wenn ein Strom fertig ist):

.pipe(gulp.dest(config.publicDir + 'images/b/')) 
    .on('end', function() { plugins.util.log("Task Done!") });