NodeJs Gulp - 在开始任务之前确认

che*_*zer 3 confirm prompt node.js gulp

我有一个非常繁重的gulp任务,我想问用户他是否真的想要开始这项任务.

我已经看到了gulp-confirmgulp-prompt,但它并没有帮助我:
我不想管道'确认'我只是不想在用户确认之前开始繁重的任务.

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

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

    });
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

ddp*_*rrt 12

不需要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();
    });
});
Run Code Online (Sandbox Code Playgroud)

done一旦你处于回调函数中inquirer,传递回调并调用它是很重要的,因此你的任务不会过早结束.

这是Gulp中最好的东西之一:你可能不需要那些插件;-)

  • 此代码不适用于查询器模块的当前版本。`inquirer.prompt()` 返回一个 promise,所以你必须使用 `inquirer.prompt(questions).then(function(answers) { // your code })` 而不是逗号结构。 (2认同)