如果满足条件,则停止Gulp任务

时间:2015-02-12 18:36:04

标签: javascript node.js gulp

我试图这样做,如果没有指定--theme标志它会停止gulp任务,并想知道以干燥方式完成它的最佳方式。

如果没有指定--theme,我希望每个单独的任务停止,如果不满足默认任务,我希望停止。

到目前为止,我尝试了一些没有运气的事情。

谢谢,

gulp.task('test', function() {

    if(typeof(args.theme) == 'undefined' || args.theme === true) {
        console.log(msg.noTheme);
        return; // end task
    }

    // run rest of task...

});

gulp.task('test-2', function() {

    if(typeof(args.theme) == 'undefined' || args.theme === true) {
        console.log(msg.noTheme);
        return; // end task
    }

    // run rest of task...

});

gulp.task('default', ['test-1', 'test-2']);

3 个答案:

答案 0 :(得分:12)

您可以使用以下命令停止脚本:

process.exit()

答案 1 :(得分:6)

我认为最简单的方法是创建一个verifyArgs函数,当不满足要求时会抛出错误:

function verifyArgs() {
  if(typeof(args.theme) == 'undefined' || args.theme === true) {
    throw Error(msg.noTheme);
  }
}

gulp.task('test', function() {
    verifyArgs();
    // run rest of task...
});

gulp.task('test-2', function() {
    verifyArgs();
    // run rest of task...
});

gulp.task('default', ['test-1', 'test-2']);

答案 2 :(得分:1)

某种异步功能可能会对您有所帮助。也许是这样的:

function processArgs(callback) {
  if(typeof(args.theme) == 'undefined' || args.theme === true) {
    return callback(new Error('Theme Not Defined'));
  }
  return callback();
}

gulp.task('test', function(done) {
  processArgs(function(err) {
    if(err) {
      console.log(err); 
      return done(err);
     }

    //else run my task
  })
});