2015-02-12 7 views
7

Я пытаюсь сделать так, если флаг -theme не указан, он останавливает задачу gulp и задается вопросом, как наилучшим образом это сделать сухим способом.Стоп 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']); 

ответ

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

Я думаю, что самый простой способ будет создать 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']); 
10

Вы можете просто остановить скрипт с:

process.exit() 
Смежные вопросы