Javascript 如何在其他任务中从grunt提示符访问用户输入
我需要编写一个grunt作业,使用grunt提示符读取用户输入,然后使用该名称创建一个目录。我试图使用config来访问另一个grunt任务中的变量,该任务将在grunt提示符后执行。但以下所有方法都给出了一个未定义的值 我试过:Javascript 如何在其他任务中从grunt提示符访问用户输入,javascript,gruntjs,grunt-prompt,Javascript,Gruntjs,Grunt Prompt,我需要编写一个grunt作业,使用grunt提示符读取用户输入,然后使用该名称创建一个目录。我试图使用config来访问另一个grunt任务中的变量,该任务将在grunt提示符后执行。但以下所有方法都给出了一个未定义的值 我试过: grunt.config('config.database') grunt.config('database') grunt.config('target.config.database') 请告知。以下是我的完整脚本: module.exports = funct
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']);
};
配置键为
目录
但您的问题是,对grunt.config()的调用是在读取GrunFile时执行的,远远早于任务运行。此时,提示符
尚未运行,因此该选项未定义
您希望只在运行时进行计算,因此请使用模板字符串'
,而不是grunt.config('directory')
mkdir:{
全部:{
选项:{
模式:0777,
创建:['']
}
}
}
配置键是目录
但您的问题是,对grunt.config()的调用是在读取GrunFile时执行的,远远早于任务运行。此时,提示符
尚未运行,因此该选项未定义
您希望只在运行时进行计算,因此请使用模板字符串'
,而不是grunt.config('directory')
mkdir:{
全部:{
选项:{
模式:0777,
创建:['']
}
}
}
只是为了添加一个替代解决方案。在其他情况下可能有用的人。提示完成后,可以使用grunt提示符的then()设置配置
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: []
}
}
}
});
显然,对于这个例子,公认的答案是最干净的解决方案。但是,如果您必须在提示后执行其他任务以及设置配置,则使用then函数非常好。只是为了添加替代解决方案。在其他情况下可能有用的人。提示完成后,可以使用grunt提示符的then()设置配置
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: []
}
}
}
});
显然,对于这个例子,公认的答案是最干净的解决方案。但是如果您必须在提示之后执行其他任务以及设置配置,那么使用then函数是很好的