2016-08-08 84 views
1

Haben Sie ein Problem mit Schluck Aufgabe mit der Streamqueue, sass, Klempner und beobachtete es am Ende auftritt. Die Aufgabe kompiliert Produktion css-Datei von Lieferanten css | scss-Dateien mit meinen eigenen.Gulp streamqueue sass Klempner zu sehen. Fehler bricht Task

gulp.task('fincss', function() { 
    watch([workData.sassSrcFiles, workData.cssVendorSrcFiles], {}, function() { 
     var convertFromScssToCssAndConcat = 
      gulp.src(workData.sassSrcFiles) 
       .pipe(plumber(error)) 
       .pipe(sass()); 

     var minifyAndConcatExistingCss = 
      gulp.src(workData.cssVendorSrcFiles) 
       .pipe(plumber(error)); 

     return sq({objectMode: true}, minifyAndConcatExistingCss, convertFromScssToCssAndConcat) 
      .pipe(concat('final.min.css')) 
      .pipe(uglifycss()) 
      .pipe(gulp.dest(workData.cssDest)) 
      .pipe(livereload()); 
    }); 
}); 

var error = function (e) { 
    console.error('Error in plugin "' + e.plugin + '"'); 
    console.error(' "' + e.message + '"'); 
    console.error(' In file "' + e.fileName + '", line "' + e.lineNumber + '".'); 
    console.log('--------------------------------------'); 
    console.log(e); 
}; 

Aber wenn Fehler in scss-Datei dann Aufgabe zu brechen. Und irgendwelche Experimente mit Klempner, die im Internet zur Verfügung stellen, hilft mir sowieso nicht. Etwas wie das Einfügen von Klempner() vor concat oder die Verwendung von this.emit('end') im Fehler-Handler tun nichts.

In anderen meine Aufgaben wie

gulp.task('toHtml', function() { 
    watch(workData.pugSrcFiles, {}, function (e) { 
     message('Start generating template.'); 
     gulp.src([workData.pugSrcFiles, '!' + workData.pugSrc + '_*.pug']) 
      .pipe(plumber(error)) 
      .pipe(pug({pretty: true})) 
      .pipe(gulp.dest(pubDir)) 
      .pipe(livereload()); 
    }); 
}); 

alles funktioniert ziemlich gut und ohne Aufgabe zu brechen.

Hilfe, bitte.

Antwort

0

Sie können stream-series verwenden, um Streamqueue zu ersetzen.

Ihre Konfigurationsdatei ändern:

var series = require('stream-series'); 

gulp.task('fincss', function() { 
    watch([workData.sassSrcFiles, workData.cssVendorSrcFiles], {}, function() { 
     var convertFromScssToCssAndConcat = 
      gulp.src(workData.sassSrcFiles) 
       .pipe(plumber({errorHandler: function(error) { 
        convertFromScssToCssAndConcat.emit('end') // important 
       }})) 
       .pipe(sass()); 

     var minifyAndConcatExistingCss = 
      gulp.src(workData.cssVendorSrcFiles) 
       .pipe(plumber(error)); 

     return series(minifyAndConcatExistingCss, convertFromScssToCssAndConcat) 
      .pipe(concat('final.min.css')) 
      .pipe(uglifycss()) 
      .pipe(gulp.dest(workData.cssDest)) 
      .pipe(livereload()); 
    }); 

});

+0

Hallo, @leon danke Aber ich bekomme Fehler '\ node_modules \ stream-series \ index.js: 23 e.pipe (PauseStream); TypeError: e.pipe ist keine Funktion bei node_modules \ stream-series \ index.js: 23: 7 bei Array.forEach (native) bei module.exports node_modules \ stream-series \ index.js: 20: 11) bei C: \ projects \ jp \ gulpfile.js: 83: 16 bei schreiben (C: \ projects \ jp \ node_module \ gulp-watch \ index.js: 144: 3) bei node_modules \ gulp-watch \ node_module \ vinyl-file \ index.js: 52: 4 bei node_modules \ gulp-watch \ node_module \ vinyl-file \ node_module \ graceful-fs \ graceful-fs.js: 78: 16 bei FSReqWrap.readFileAfterClose [as oncomplete] (fs.js: 380: 3) ' –

+0

@PaulBurilichev, ich kann nicht wissen, was passiert ist, aus dem Fehlerprotokoll, das Sie hier kopiert haben. Aber 'stream-series' sollte funktionieren können. Ich habe es in meinem Projekt verwendet, Sie können sich auf Zeile 118 von https://github.com/njleonzhang/generator-gulp-ionic/blob/master/generators/app/templates/_gulpfile.js beziehen. – Leon

+0

Vielen Dank! –