2017-10-16 5 views
0

Ich habe eine svg-sprites Schluck Aufgabe durch meine Sprites Schleife. Einige von ihnen müssen minimiert werden, also habe ich einen if, der die Minify-Aufgabe auf diesen Sprites ausführt.Add Promise zu Schluck Aufgabe mit forEach

Ich möchte, dass es als beendet angezeigt wird, wenn das forEach beendet ist. Gerade jetzt sagt es "Fertig" viel zu früh. Ich denke, ich sollte ein Versprechen hinzufügen, aber ich bin mir nicht sicher, wie ich es angehen soll. Hilfe geschätzt.

var gulp =  require('gulp'); 
var svgSprite = require('gulp-svg-sprite'); 
var svgmin =  require('gulp-svgmin'); 

gulp.task('svg-sprites', function() { 

    var stream = ''; 

    config.svgSprites.forEach(function (item) { 

    stream = gulp.src(item.src + '/**/*.svg'); 

    if(item.doMinify) { 
     stream.pipe(svgmin({ 
     plugins: [ 
      { 
      removeAttrs: { 
       attrs: ['path:fill', 'g:fill'] 
      } 
      } 
     ] 
     })) 
    } 

    stream.pipe(svgSprite()) 
     .pipe(gulp.dest(normalizePath(item.dest))); 
    }); 

    return stream; 
}); 

Antwort

0

ich meine Ströme anscheinend auf ein Array von Strömen benötigt schieben und alle Ströme am Ende verschmelzenden, die ganze Zeit, wenn Rohrleitungen meines Strom Variable „Aktualisierung“. Ich endete damit:

var gulp =  require('gulp'); 
var svgSprite = require('gulp-svg-sprite'); 
var svgmin =  require('gulp-svgmin'); 
var merge =  require('merge-stream'); 

gulp.task('svg-sprites', function() { 
    var streams = []; 

    config.svgSprites.forEach(function (item) { 
    var stream = gulp.src(item.src + '/**/*.svg'); 

    if(item.doMinify) { 
     // "Update" stream to be a reference to the output of the task 
     stream = stream.pipe(svgmin({ 
     plugins: [ 
      { 
      removeAttrs: { 
       attrs: ['path:fill', 'g:fill'] 
      } 
      } 
     ] 
     })) 
    } 

    // "Update" stream to be a reference to the output of the task 
    stream = stream.pipe(svgSprite()).pipe(gulp.dest(normalizePath(item.dest))); 

    streams.push(stream); 
    }); 

    return merge.apply(this, streams); 
}); 
Verwandte Themen