在提示之间传递数据

时间:2017-05-17 09:15:05

标签: javascript node.js yeoman yeoman-generator

我可以在自耕农的两个提示之间传递数据吗?

例如,我有两个提示,如

{
  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

还有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

我终于找到了答案。实现它的方法是使用两个提示变量,并在第一个承诺返回后运行第二个提示变量

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