Wie führe ich die zweite Aufgabe nur aus, wenn die Karma-Testaufgabe mit Gulp erfolgreich ist?
-
20-12-2019 - |
Frage
Ich verwende Gulp.Ich habe ein deploy
Aufgabe, die danach ausgeführt wird test
Aufgabe.Das Problem ist, dass deploy
Die Aufgabe wird auch dann ausgeführt, wenn der Test fehlgeschlagen ist.Gibt es eine Möglichkeit zu rennen? deploy
Aufgabe nur, wenn die Tests im Schluck erfolgreich sind?
gulp.task('test', function() {
return gulp.src('some_test_tile')
.pipe(karma({
configFile: 'karma.conf.js',
action: 'run'
}));
});
gulp.task('deploy', ['test'], function() {
return gulp.src(paths.scripts)
.pipe(gulp.dest(paths.dest));
});
ich benutze gulp-karma
um Karma-Tests durchzuführen.
Lösung
Der Schluck-Karma-Beispiel sagt, man soll .on('error', ...) nach der Pipe zu Karma hinzufügen und den Fehler manuell auslösen, um sicherzustellen, dass Gulp ungleich Null beendet wird, wenn Tests fehlschlagen.Das sollte es tun.
Andere Tipps
Werden Ihre Aufgaben ausgeführt, bevor die Abhängigkeiten abgeschlossen sind?Stellen Sie sicher, dass Ihre Abhängigkeitsaufgaben die Hinweise zur asynchronen Ausführung korrekt verwenden.
Aufgaben können asynchron gemacht werden, wenn dies der Fall ist fn
führt einen der folgenden Schritte aus:
- Nehmen Sie einen Rückruf an
- Gibt einen Stream zurück
- Geben Sie ein Versprechen zurück
Siehe Beispiel auf API-Dokumentation
var gulp = require('gulp');
// takes in a callback so the engine knows when it'll be done
gulp.task('one', function (cb) {
// do stuff -- async or otherwise
cb(err); // if err is not null and not undefined, the run will stop, and note that it failed
});
// identifies a dependent task must be complete before this one begins
gulp.task('two', ['one'], function () {
// task 'one' is done now
});
gulp.task('default', ['one', 'two']);