2016-07-29 10 views
0

ich einige Gulp Aufgaben angegeben haben in einem gulpSequence wie folgt aus:für die Fertigstellung in Gulp Aufgaben warten

gulp.task('default', function(done){ 
    gulpSequence(
     'private:clean', 
     'private:copy-app-package-file', 
     'private:copy-app-main-file', 
     'private:copy-libs', 
     'private:copy-app-files', 
     'private:copy-css-files', 
     'private:build-html', 
     'private:package-app', 
     done); 
}); 

Ich dachte, dass sie einer nach dem anderen ausgeführt werden soll. Die build-html Aufgaben benötigen die Bibliotheken, App-Dateien und CSS-Dateien, da sie in einer HTML-Datei enthalten sind.

Aber wenn ich die Standardaufgabe ausführen, fehlen der Build-HTML-Task einige Dateien. Zum Beispiel kann der Task nur 10 Dateien in die HTML-Datei einfügen, aber es gibt 16 Dateien.

Gibt es eine andere Möglichkeit, abhängige Aufgaben anzugeben. Ich dachte, die gulpSequence wird damit umgehen.

+0

werden gibt es eine andere Art und Weise die Aufgabe A als eine Abhängigkeit für Aufgabe B zu setzen, können Sie es auf diese Weise tun können, aber Aufgabe Zusammensetzung schwierig sein. –

+0

Alle Ihre Aufgaben müssen korrekt asynchrone Beendigung signalisieren. Siehe [diese Antwort] (http://stackoverflow.com/a/36899424/5892036) (es ist für Schluck 4, aber das meiste gilt auch für Schluck 3). –

Antwort

0

Sie haben angegeben, dass alle Tasks nacheinander ohne Parallelität ausgeführt werden sollen. Eine neue Aufgabe beginnt, sobald eine frühere Aufgabe abgeschlossen ist.

Wahrscheinlich haben Sie einige Probleme in einer Aufgabe vor der build-html Aufgabe. Behandeln sie die Vervollständigung (done() Rückruf) korrekt? In den meisten Fällen habe ich gesehen, dass eine asynchrone Aktion ausgelöst wurde und der Callback aufgerufen wurde, bevor die asynchrone Task beendet wurde. So wird die Sequenz fortgesetzt, bevor die Aufgabe wirklich vorbei ist ...

0

Sie sind auf den richtigen Linien, aber das npm-Paket, das Sie versuchen zu verwenden, wird abgeschrieben. Könnte es wert sein in Betracht zu ziehen auschecken run-sequence (https://www.npmjs.com/package/run-sequence), die auf eine vorherige Aufgabe wartet, bevor Sie beginnen.

Also in Ihrem Fall würde dies

gulp.task('default', function(cb) { $.runSequence( 'private:clean', 'private:copy-app-package-file', 'private:copy-app-main-file', 'private:copy-libs', 'private:copy-app-files', 'private:copy-css-files', 'private:build-html', 'private:package-app', cb ) });

Verwandte Themen