首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在其他任务中从咕噜提示访问用户输入?

如何在其他任务中从咕噜提示访问用户输入?
EN

Stack Overflow用户
提问于 2015-06-08 12:23:45
回答 2查看 1.5K关注 0票数 1

我需要用咕噜-提示符写一个读取用户输入的咕噜作业,然后用这个名字创建一个目录。我正在尝试使用配置来访问另一个grunt任务中的变量,该任务将在grunt-提示符之后执行。但以下所有方法都给出了一个未定义的方法。

我试过:

代码语言:javascript
复制
grunt.config('config.database')
grunt.config('database')
grunt.config('target.config.database')

请给我建议。这是我的完整剧本:

代码语言:javascript
复制
module.exports = function(grunt) {

grunt.initConfig({          

    prompt: {
        target: {
            options: {
                questions: [
                    {
                        config: 'directory',
                        type: 'input',
                        message: 'Enter direcotry Name',
                        validate: function(value){
                            if(value == '') {
                                return 'Should not be blank';
                            }
                            return true;
                        }
                    }                       
                ]
            }
        },
    },

    mkdir: {
        all: {
            options: {
                mode: 0777,
                create: [
                    grunt.config('config.directory')
                ]
            }
        }
    }       

});

grunt.loadNpmTasks('grunt-mkdir');
grunt.loadNpmTasks('grunt-prompt');

grunt.registerTask('default', 'prompt:target', 'mkdir']);
};
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-09 00:11:40

配置键是directory

但您的问题是,在读取Gruntfile时,即在任务运行之前执行对grunt.config()的调用。此时,prompt尚未运行,因此该选项未定义。

您希望只在运行时进行评估,所以使用模板字符串'<%= directory %>'而不是grunt.config('directory')

代码语言:javascript
复制
mkdir: {
    all: {
        options: {
            mode: 0777,
            create: ['<%= directory %>']
        }
    }
}
票数 4
EN

Stack Overflow用户

发布于 2016-05-19 02:51:29

只是为了加入另一种解决方案。在其他情况下可能有用的东西。当提示完成后,您可以使用grunt- prompt 's to ()来设置配置。

代码语言:javascript
复制
grunt.initConfig({          

prompt: {
    target: {
        options: {
            questions: [
                {
                    config: 'directory',
                    type: 'input',
                    message: 'Enter direcotry Name',
                    validate: function(value){
                        if(value == '') {
                            return 'Should not be blank';
                        }
                        return true;
                    }
                }                       
            ],
            then: function(results){                
                grunt.config.set('mkdir.all.options.create', [results.directory]);                      
            }
        }
    },
},

mkdir: {
    all: {
        options: {
            mode: 0777,
            create: []
        }
    }
}       

});

显然,对于这个例子,公认的答案是最干净的解决方案。但是,如果您必须在提示符之后执行其他任务以及设置配置,那么使用然后函数是很好的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30709094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档