Hier ist eine zusammengesetzte Aufgabe, die ich nicht durch Aufgabenabhängigkeiten ersetzen kann.
...
gulp.task('watch', function () {
var server = function(){
gulp.run('jasmine');
gulp.run('embed');
};
var client = function(){
gulp.run('scripts');
gulp.run('styles');
gulp.run('copy');
gulp.run('lint');
};
gulp.watch('app/*.js', server);
gulp.watch('spec/nodejs/*.js', server);
gulp.watch('app/backend/*.js', server);
gulp.watch('src/admin/*.js', client);
gulp.watch('src/admin/*.css', client);
gulp.watch('src/geojson-index.json', function(){
gulp.run('copygeojson');
});
});
Das entsprechende Änderungsprotokoll https://github.com/gulpjs/gulp/blob/master/CHANGELOG.md#35 [gulp.run veralten]
javascript
gulp
toutpt
quelle
quelle
scripts
, aber es ist auch sinnvoll, diese Aufgabe sofort zu erzwingen (ohne zu warten, bis sich einige Skriptdateien ändern).gulp.task('default', ['build', 'watch']);
, die zuerst erstellt und dann gestartet wird.Oder Sie können so tun:
quelle
.start
ist eine Orchestrator-Methode. Da Gulp davon erbt, sollte es funktionieren. Ich löse eine Schluckaufgabe über eine Nicht-Schluck-Funktion (watchify) aus und dies scheint zu funktionieren.gulp.start
wird in der nächsten Version entfernt: github.com/gulpjs/gulp/issues/505#issuecomment-45379280gulp-start
durchrun-sequence
npmjs.com/package/run-sequenceQuelle: https://github.com/gulpjs/gulp/issues/755
gulp.start()
war nie als öffentliche API gedacht oder benutzt. Und wie oben in den Kommentaren erwähnt, wird die Aufgabenverwaltung in der nächsten Version ersetztgulp.start()
.Die wahre Absicht des gulp-Designs ist es, reguläre Javascript-Funktionen zu erstellen und nur die Aufgabe zu übernehmen, sie aufzurufen.
Beispiel:
quelle
Vergib mir, dass ich eine alte Frage wiederbelebt habe. Die akzeptierte Antwort behandelt nicht das Problem der Ausführung von Aufgaben vor dem Einstellen der Uhren. Die nächste Antwort verwendet gulp.start, das verschwindet. Die dritte Antwort weist darauf hin, dass reguläre Funktionen verwendet werden sollten, aber das Beispiel scheint seltsam. Ich habe etwas gesucht, aber kein einfaches Beispiel gefunden.
Hier ist meine Lösung. Die Idee ist, reguläre js-Funktionen zu definieren und sie dann als Aufgaben zu registrieren. Die Funktionen können dann bei Bedarf direkt oder innerhalb einer Uhr aufgerufen werden.
Ich bin neu zu schlucken. Bitte lassen Sie mich wissen, wenn ich etwas Offensichtliches übersehen habe.
quelle
gulp.watch
Aufgaben in definiertenwatchTask()
bevorbuildTask()
abgeschlossen ist bestätigt? Ich bin der Meinung, dass dies immer noch eine Rennbedingung ist und nicht garantiert, dass es vor der Uhr gebaut wird.schlucken 4
Ich mag gulp4!
quelle
Wie @dman erwähnt,
gulp.start
wird dies in der nächsten Version verworfen. Auch in dieser Ausgabe von gulp ist zu sehen .Und in den Kommentaren der Antwort von @Pavel Evstigneev, @joemaller erwähnt , dass wir verwenden können Laufsequenz in diesem Szenario.
Bitte beachten Sie jedoch, dass der Autor der Run-Sequenz sagt:
Vor gulp 4.0 können wir also die Run-Sequenz verwenden , nach 4.0 können wir nur noch gulp verwenden.
quelle
Wenn Sie die Reihenfolge der ausgeführten Aufgaben beibehalten müssen, können Sie Abhängigkeiten wie hier beschrieben definieren. Sie müssen lediglich den Stream aus der Abhängigkeit zurückgeben:
Definieren Sie die davon abhängige Aufgabe:
Und benutze es von der Uhr:
Jetzt wird die
dependecy
Aufgabe vor der Ausführung abgeschlossendepends
(zum Beispiel wären Ihre Aufgaben "Jasmin" und "Einbetten" Abhängigkeiten, und Sie hätten einen anderen "Server" für Aufgaben, der von ihnen abhängen würde). Keine Notwendigkeit für Hacks.quelle
In Gulp 4 scheint das einzige, was für mich zu funktionieren scheint:
quelle
Um eine Aufgabe auszuführen, bevor Sie mit dem Ansehen beginnen, führen Sie statt gulp.run () oder gulp.start () einfach den Befehl gulp direkt nach oben aus.
Also statt:
Mach einfach:
Oder Sie können den letzteren Code in eine "normale" Funktion einschließen und ihn aufrufen, wann immer Sie möchten.
- Inspiriert von dieser Antwort aus einem ähnlichen Thread .
quelle
Ich sehe immer noch nicht, wie dies die vorliegende Frage tatsächlich löst.
Wenn ich 4 Aufgaben habe, zwischen denen Abhängigkeiten definiert sind
A B C D
Dabei hängt A von B usw. ab, wie durch definiert,
gulp.task('A',['B'],function A(){});
und dann habe ich mit gulp.watch eine neue Aufgabe definiert, bei der nur die Funktionen ausgeführt werden, um die Abhängigkeiten zu duplizieren.zB gegeben diese Aufgaben (jede Aufgabenfunktion wird über den Namen angezeigt):
ich kann schreiben 1)
Dies würde A-> D ausführen, aber wenn z. B. Schritt B fehlschlägt, würde es niemals in die Aufgabe eintreten (denken Sie an Kompilierungs- oder Testfehler).
oder ich kann schreiben 2)
die nicht A-> D laufen würde, bis etwas zuerst geändert wurde.
oder ich kann schreiben 3)
Dies würde zu Duplikaten (und Fehlern im Laufe der Zeit) der Abhängigkeitshierarchie führen.
PS: Falls sich jemand fragt, warum ich möchte, dass meine Überwachungsaufgabe ausgeführt wird, wenn eine der abhängigen Aufgaben fehlschlägt, liegt dies normalerweise daran, dass ich watch für die Live-Entwicklung verwende. z.B. Ich starte meine Überwachungsaufgabe, um mit der Arbeit an Tests usw. zu beginnen, und es kann sein, dass der ursprüngliche Code, mit dem ich beginne, bereits Probleme aufweist, also Fehler.
Also würde ich hoffen, dass der Schlucklauf oder ein gleichwertiges Produkt für einige Zeit bleibt
quelle