只有在使用Gulp进行业力测试任务时,如何运行第二项任务?

时间:2014-02-24 23:28:03

标签: gulp gulp-karma

我正在使用Gulp。我有deploy任务在test任务之后运行。问题是即使测试失败,deploy任务也会运行。有没有办法只在测试成功时运行deploy任务?

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));
});

我正在使用gulp-karma来运行Karma测试。

2 个答案:

答案 0 :(得分:2)

在依赖项完成之前,您的任务是否正在运行?确保您的依赖项任务正确使用异步运行提示。

如果fn执行以下操作之一,则可以使任务异步:

  • 接受回电
  • 返回流
  • 回复承诺

请参阅API documentation

上的示例
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']);

答案 1 :(得分:1)

gulp-karma example表示在管道到业力之后添加.on('error',...),并手动抛出错误以确保gulp在任何测试失败时退出非零。应该这样做。