我需要用咕噜-提示符写一个读取用户输入的咕噜作业,然后用这个名字创建一个目录。我正在尝试使用配置来访问另一个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']);
};发布于 2015-06-09 00:11:40
配置键是directory。
但您的问题是,在读取Gruntfile时,即在任务运行之前执行对grunt.config()的调用。此时,prompt尚未运行,因此该选项未定义。
您希望只在运行时进行评估,所以使用模板字符串'<%= directory %>'而不是grunt.config('directory')。
mkdir: {
all: {
options: {
mode: 0777,
create: ['<%= directory %>']
}
}
}发布于 2016-05-19 02:51:29
只是为了加入另一种解决方案。在其他情况下可能有用的东西。当提示完成后,您可以使用grunt- prompt 's to ()来设置配置。
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: []
}
}
}
});显然,对于这个例子,公认的答案是最干净的解决方案。但是,如果您必须在提示符之后执行其他任务以及设置配置,那么使用然后函数是很好的。
https://stackoverflow.com/questions/30709094
复制相似问题