2

我正在使用 Gulp。我有一个deploy在任务之后运行的test任务。问题是deploy即使测试失败,任务也会运行。deploy只有当测试在 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));
});

gulp-karma用来运行 Karma 测试。

4

2 回答 2

2

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

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

  • 接受回调
  • 返回一个流
  • 返回一个承诺

请参阅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']);
于 2014-02-25T08:20:25.027 回答
1

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

于 2014-03-16T04:28:45.323 回答