2016-07-06 6 views
1

Ich kompiliere Typoskript-Dateien in Javascript aus verschiedenen Quellen zu verschiedenen Zielen. Ich muss wissen, wann alle Kompilationen ausgeführt werden, um die Aufgabe minifyJS auszuführen. Das Problem ist, dass ich den Fehler: Error: task completion callback called too many times. Was ist richtig, aber wie soll ich das schaffen?Fehler: Rückruf für Aufgabenabschluss zu oft aufgerufen

gulp.task('compileTS', function (done) { 
    // Compile pages 
    pump([ 
     gulp.src(paths.componentsTS), 
     typescript({ 
      target: 'ES5' 
     }), 
     gulp.dest(paths.dest) 
    ], done); 

    // Compile services 
    pump([ 
     gulp.src(paths.servicesTS), 
     typescript({ 
      target: 'ES5' 
     }), 
     gulp.dest(paths.dest + 'Services/') 
    ], done); 

    // Compile tests 
    pump([ 
     gulp.src(paths.testsTS), 
     typescript({ 
      target: 'ES5' 
     }), 
     gulp.dest(paths.destTestsJS) 
    ], done); 
}); 

// This task needs to be called after 'compileTS' is done 
gulp.task('minifyJS', ['compileTS'], function() { 
    pump([ 
     gulp.src([paths.dest + paths.allJS]), 
     uglify(), 
     rename({ 
      suffix: '.min' 
     }), 
     gulp.dest(paths.dest) 
    ]); 
}); 
+0

Bitte können Sie Ihre gulpfile.js vollständig posten, und ich kann dies lokal ausführen und eine Lösung für Sie posten :) – mattpark22

Antwort

2

einige Zähler hinzufügen (z remains) Vollständigkeit verfolgen:

gulp.task('compileTS', function (done) { 
    var remains = 0; 
    // Compile pages 
    remains++; 
    pump([ 
     gulp.src(paths.componentsTS), 
     typescript({ 
      target: 'ES5' 
     }), 
     gulp.dest(paths.dest) 
    ], completed); 

    remains++; 
    // Compile services 
    pump([ 
     gulp.src(paths.servicesTS), 
     typescript({ 
      target: 'ES5' 
     }), 
     gulp.dest(paths.dest + 'Services/') 
    ], completed); 

    remains++; 
    // Compile tests 
    pump([ 
     gulp.src(paths.testsTS), 
     typescript({ 
      target: 'ES5' 
     }), 
     gulp.dest(paths.destTestsJS) 
    ], completed); 

    function completed() { 
     if (--remains===0) { 
      done(null, ''); 
     } 
    } 
}); 

Behandlung von Störungen, die ich für Sie gehalten.

+0

Ich dachte an diese Lösung. Ich schätze, ich werde es tun, das ist schade, es gibt keine "Schlucklösung". – Elfayer