我需要编写一个grunt作业,以使用grunt-prompt读取用户输入,然后使用该名称创建目录。我正在尝试使用配置访问另一个grunt任务中的变量,该任务将在grunt-提示后执行。但是以下所有方法均未定义。

我试过了:

grunt.config('config.database')
grunt.config('database')
grunt.config('target.config.database')


请指教。这是我的完整脚本:

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

最佳答案

配置键为directory

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

您需要仅在运行时评估的内容,因此请使用模板字符串'<%= directory %>'而不是grunt.config('directory')

mkdir: {
    all: {
        options: {
            mode: 0777,
            create: ['<%= directory %>']
        }
    }
}

关于javascript - 在其他任务中如何从提示提示访问用户输入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30709094/

10-16 14:14