如果条件符合,停止Gulp任务

我试图做到这一点,如果没有指定 – 主题标志,它会停止吞咽任务,并想知道以干的方式做的最好方法。

如果没有指定 – 主题,我希望每个单独的任务都停止,并且如果不满足默认任务,也要停止。

到目前为止,我已经尝试了一些没有运气的东西。

谢谢,

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']); 

您可以简单地停止脚本:

 process.exit() 

我认为最简单的方法是创build一个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']); 

某种asynchronous函数可能会帮助你。 也许这样:

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