Comment exécuter la deuxième tâche uniquement lorsque la tâche de test de karma réussit avec Gulp ?
-
20-12-2019 - |
Question
J'utilise Gulp.j'ai un deploy
tâche qui s'exécute après test
tâche.Le problème est que deploy
la tâche s'exécute même si le test échoue.Y a-t-il un moyen de courir deploy
tâche uniquement lorsque les tests réussissent dans gulp ?
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));
});
j'utilise gulp-karma
pour exécuter des tests Karma.
La solution
Le exemple de gulp-karma dit d'ajouter .on('error', ...) après le canal vers karma et de lancer manuellement l'erreur pour garantir que gulp sort non nul si des tests échouent.Ça devrait le faire.
Autres conseils
Vos tâches sont-elles exécutées avant que les dépendances ne soient terminées ?Assurez-vous que vos tâches de dépendance s'exécutent correctement à l'aide des conseils d'exécution asynchrone.
Les tâches peuvent être rendues asynchrones si cela est fn
effectue l'une des opérations suivantes :
- Accepter un rappel
- Renvoyer un flux
- Renvoyer une promesse
Voir exemple sur Documentation API
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']);