Yeoman 中的递归和非递归提示
Recursive and non-recursive prompt together in Yeoman
我正在构建一个 Yeoman 生成器,并为用户提供一些提示,我使用这样的提示队列:
var prompts = [{
name: 'name',
message: 'What is the name of this module?'
},{
name: 'desc',
message: 'Describe your module:'
}];
this.prompt(prompts, function (props) {
this.name = props.name;
this.desc = props.desc;
done();
}.bind(this));
但是如何在这个提示中添加一个递归问题呢?我想向用户询问依赖项,让他们填一个名字,按回车,再填另一个名字,直到他们按回车得到一个空白答案。
经过一些尝试,我找到了一个有效的解决方案:
var dependencies = [];
var dependency = function(self) {
var dep_quest = {
name: "dependency",
message: "Need any dependencies? (Leave blank to continue)"
};
self.prompt([dep_quest], function(props)
if (props.dependency !== '') {
dependencies.push(props.dependency);
dependency(self);
}
else {
self.dependencies = dependencies;
done();
}
});
}
this.prompt(prompts, function (props) {
this.name = props.name;
this. desc = props.desc;
dependency(self);
}.bind(this));
在常规问题之后,我调用了依赖函数,它一次又一次地询问一个问题,直到提供一个空白答案。然后它调用 done()
函数。
我正在构建一个 Yeoman 生成器,并为用户提供一些提示,我使用这样的提示队列:
var prompts = [{
name: 'name',
message: 'What is the name of this module?'
},{
name: 'desc',
message: 'Describe your module:'
}];
this.prompt(prompts, function (props) {
this.name = props.name;
this.desc = props.desc;
done();
}.bind(this));
但是如何在这个提示中添加一个递归问题呢?我想向用户询问依赖项,让他们填一个名字,按回车,再填另一个名字,直到他们按回车得到一个空白答案。
经过一些尝试,我找到了一个有效的解决方案:
var dependencies = [];
var dependency = function(self) {
var dep_quest = {
name: "dependency",
message: "Need any dependencies? (Leave blank to continue)"
};
self.prompt([dep_quest], function(props)
if (props.dependency !== '') {
dependencies.push(props.dependency);
dependency(self);
}
else {
self.dependencies = dependencies;
done();
}
});
}
this.prompt(prompts, function (props) {
this.name = props.name;
this. desc = props.desc;
dependency(self);
}.bind(this));
在常规问题之后,我调用了依赖函数,它一次又一次地询问一个问题,直到提供一个空白答案。然后它调用 done()
函数。