在提示之间传递数据
Pass data between prompts
我可以在 yeoman 中的两个提示之间传递数据吗?
例如,我有两个提示
{
type: 'input',
name: 'Name',
message: 'Name?'
},{
type: 'input',
name: 'package',
message: 'Package?',
default: 'org.my.app.'+<prompt.name>
}
我想显示 name
属性 作为包的默认值?我能想到的一种方法是:
- 默认显示模板(如示例)
- 稍后在为用户创建最终模板时更改值。
我尝试的另一种方法是使用 when
{
type: 'input',
name: 'Name',
message: 'Name?'
},{
when: (response) => {
this.testValue = response.Name
return true
},
type: 'input',
name: 'package',
message: 'Package?',
default: 'org.my.app.'+this.testValue
}
但它给出 undefined
即使在函数内部值已存储在 this.testValue
中
有没有更好的方法?
我终于找到了答案。实现它的方法是使用两个提示变量和 运行 第一个承诺之后的第二个 returns
const prompt1 = [{
type: 'input',
name: 'Name',
message: 'Name?'
}];
return this.prompt(prompt1).then(props => {
const prompt2 = [{
type: 'input',
name: 'package',
message: 'Package?',
default: 'org.my.app.'+props.name
}];
return this.prompt(prompt2).then(props => {
//code goes here
});
});
我可以在 yeoman 中的两个提示之间传递数据吗?
例如,我有两个提示
{
type: 'input',
name: 'Name',
message: 'Name?'
},{
type: 'input',
name: 'package',
message: 'Package?',
default: 'org.my.app.'+<prompt.name>
}
我想显示 name
属性 作为包的默认值?我能想到的一种方法是:
- 默认显示模板(如示例)
- 稍后在为用户创建最终模板时更改值。
我尝试的另一种方法是使用 when
{
type: 'input',
name: 'Name',
message: 'Name?'
},{
when: (response) => {
this.testValue = response.Name
return true
},
type: 'input',
name: 'package',
message: 'Package?',
default: 'org.my.app.'+this.testValue
}
但它给出 undefined
即使在函数内部值已存储在 this.testValue
有没有更好的方法?
我终于找到了答案。实现它的方法是使用两个提示变量和 运行 第一个承诺之后的第二个 returns
const prompt1 = [{
type: 'input',
name: 'Name',
message: 'Name?'
}];
return this.prompt(prompt1).then(props => {
const prompt2 = [{
type: 'input',
name: 'package',
message: 'Package?',
default: 'org.my.app.'+props.name
}];
return this.prompt(prompt2).then(props => {
//code goes here
});
});