2017-05-17 14 views
0

yeoman에서 두 프롬프트간에 데이터를 전달할 수 있습니까?프롬프트간에 데이터 전달

예 내가

내가 패키지에 대한 기본 값으로 name 속성을 보여주고 싶은
{ 
    type: 'input', 
    name: 'Name', 
    message: 'Name?' 
},{ 
    type: 'input', 
    name: 'package', 
    message: 'Package?', 
    default: 'org.my.app.'+<prompt.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 
} 

하지만 함수 값의 내부 this.testValue

이 더 좋은 방법이 있나요에 보관 한 경우에도 undefined 제공을 사용하여입니까?

답변

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