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

Ros*_*oss 8 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']);
Run Code Online (Sandbox Code Playgroud)

Pie*_*ier 12

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

process.exit()
Run Code Online (Sandbox Code Playgroud)


Ben*_*Ben 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']);
Run Code Online (Sandbox Code Playgroud)


sct*_*skw 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
  })
});
Run Code Online (Sandbox Code Playgroud)