Ich entwickle ein Typoskript-Projekt mit den folgenden Build-Schritten:
Ich verwende Gulp 4.0 als Build-Tool und möchte eine Überwachungsaufgabe haben, die den Test auslösen sollte (was bedeutet, dass Flusen- und Build-Aufgaben vorher ausgelöst werden). Wenn ein Fehler auftritt (z. B. ein Flusenfehler), wird die Überwachungsaufgabe derzeit beendet.
Dieses Problem ist bekannt und leicht zu lösen. Die typische Lösung ist a) um Fehler zu vermeiden oder b) das Verhalten der Pipe zu korrigieren.
a) Für den gulp-tslint könnte ich diese Konfiguration von ihrer Homepage aus verwenden:
%Vor% Aber wenn ich das emitError
-Flag einfüge, werden die Fusselfehler protokolliert und alle folgenden Schluckaufgaben werden ausgeführt (Build, Test).
b) Ich könnte auch gulp-plumber
verwenden oder manuell Fehler abfangen (siehe hier ), aber das Verhalten ist das Für alle diese bekannten Lösungen werden die folgenden Schluckaufgaben ausgeführt (Build, Test).
Was ich möchte ist, dass die Task-Kette nach einem Fehler stoppt (kein Build und Test nach einem Flusenfehler), aber die Watch-Task sollte niemals aufhören. Wie könnte ich das lösen? Die Watcher-Aufgaben sehen so aus:
%Vor% Sie finden die komplette gulpfile.js
hier .
Der Grund für das Stoppen Ihrer Uhr ist, dass ein err
-Objekt in der Callback-Kette weitergegeben wird. Sie müssen verhindern, dass err
den letzten gulp.watch()
Callback erreicht.
Sie können das tun, indem Sie den von gulp.watch()
bereitgestellten Callback umbrechen und niemals das Objekt err
an den ursprünglichen Callback übergeben:
Beachten Sie, dass gulp.series('lint', 'build', 'test')
die Aufgaben nicht wirklich ausführt. Es gibt nur eine neue Funktion zurück, die einen Rückruf akzeptiert. Nur wenn diese neue Funktion als gulp.series('lint', 'build', 'test')()
aufgerufen wird, werden die tatsächlich ausgeführten Aufgaben ausgeführt.
Ich habe auch die ignoreInitial
-Option hinzugefügt, so dass die Überwachung nach dem Start einmal ausgeführt wird, was zu sein scheint, was du mit gulp.series('test', ...)
in deiner watch
Aufgabe erreichen willst.
(Abgesehen davon, dass gulpfile.js
angesehen wird, ist nutzlos. Änderungen an Ihrer gulp-Datei werden erst wirksam, wenn Sie gulp watch
erneut ausführen. Es gibt keinen Weg dazu.)
Schließlich müssen Sie Ihre anderen Aufgaben entkoppeln, damit sie keine expliziten Abhängigkeiten zu anderen Aufgaben haben. Es ist verlockend, eine Schluck 3.x-Aufgabe wie folgt zu übersetzen:
%Vor%In eine Schluck 4.x Aufgabe wie folgt:
%Vor%Sie sehen auf der Oberfläche ähnlich aus, aber unter der Haube sind sie ganz anders. Weitere Informationen zu diesem Thema finden Sie in diesem Artikel .
Eine gute Strategie besteht darin, Ihre Aufgaben in zwei Kategorien zu gliedern:
Nach diesem Prinzip können Ihre anderen Aufgaben in diesem Bereich neu strukturiert werden:
%Vor%Tags und Links typescript gulp watch