NodeJs Gulp - 开始任务前确认

NodeJs Gulp - confirm before starting task

我有一个很重的gulp任务,我想问问用户是否真的想开始这个任务。

我已经看过 gulp-confirm and gulp-prompt 但它对我没有帮助:
我不想通过管道传送 'confirm' 我只是不想在用户确认之前开始繁重的任务。

我正在努力实现这样的目标:

gulp.task('confirm', [], function ()
  {
            //Ask the confirm question here and cancel all task if the user abort
            prompt.confirm({
                message: 'This task will create a new tag version\n. Are you sure you want to continue?',
                default: true
            });
  });

    gulp.task('Build Release QA', ['confirm'], function ()//use this task to make release to QA
    {
        //very heavy task, don't start it if user abort it from 'confirm' task

    });

有什么想法吗?

不需要 Gulp 插件,实际上这两个包裹的包 -- inquirer -- 做你需要的任何事情:

var inquirer = require('inquirer');

gulp.task('default', function(done) {
    inquirer.prompt([{
        type: 'confirm',
        message: 'Do you really want to start?',
        default: true,
        name: 'start'
    }], function(answers) {
        if(answers.start) {
            gulp.start('your-gulp-task');
        }
        done();
    });
});

传递 done 回调并在 inquirer 的回调函数中调用它很重要,这样您的任务就不会提前结束。

这是 Gulp 中最好的事情之一:您可能不需要那些插件 ;-)