Wie führe ich die zweite Aufgabe nur aus, wenn die Karma-Testaufgabe mit Gulp erfolgreich ist?

StackOverflow https://stackoverflow.com//questions/22001368

  •  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.

War es hilfreich?

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']);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top