2017-12-18 19 views
0

사용자에게 매개 변수를 묻는 메시지가 표시되는 발전기를 작성 중이므로 option으로 전화를 겁니다. 그 대답에 따라 I 출력 파일 중 하나를 변경하려면 :Yeoman generator - 프롬프트 된 매개 변수에 따라 일부 파일의 내용을 변경하는 방법

SomeClass.java을

public class SomeClass{ 

    //if option=x I don't want to include this attribute: 
    private String field1; 

    //if option=x I want to generate an attribute with the value of the promted attribute 
    private String ${info}; 

어떻게 위의 의견에 설명 된 작업을 할 수 있습니까?

답변

0

하는 index.js 다음은 프롬프트와 이름을 포함하여 프롬프트의 유형 모두를 선언 할 prompting() 방법

. 그런 다음 writing() 당신은 여기 템플릿에 사람들을 전달합니다 MyClass.java

module.exports = class extends Generator { 
    prompting() { 
    // Have Yeoman greet the user. 
    this.log(yosay(
     'Welcome to the remarkable ' + chalk.red('generator-react-starter-kit-relay-container') + ' generator!' 
    )); 

    const prompts = [{ 
     type: 'input', 
     name: 'info', 
     message: 'INFO IN YOUR CLASS' 
    }, { 
     type: 'confirm', 
     name: 'x', 
     message: 'YOUR OPTION X' 
    }]; 

    return this.prompt(prompts).then(props => { 
     this.props = props; 
    }); 
    } 

    writing() { 
    this.fs.copyTpl(
     this.templatePath('MyClass.js'), 
     this.destinationPath(<YOUR DESTINATION PATH>), 
     { 
     info: this.props.info, 
     x: this.props.x 
     } 
    ); 
    } 
}; 

템플릿/MyClass.java

public class MyClass{ 

    <% if (x) { %> 
    private String <%= info %>; 
    <% } else { %> 
    private String field1; 
    <% } %> 

} 
+0

아차, 나는 이것이 시간 전 질문을 받았다 것을 보지 못했다. –

+0

안녕하세요, 귀하의 답변에 감사 드리며 귀하와 같은 시간에 나 자신에게 답변했습니다. 어쨌든, 시간을내어 도와 드리겠습니다 .-) – codependent

+0

예, 업데이트로이 질문이 목록의 맨 위로 올랐을 수도 있으므로 새로운 질문이라고 생각했습니다. 어쨌든 건배! –

0

이 내가 그것을 해결하는 방법입니다

SomeClass.java을 :

public class SomeClass{ 

    <%_ if (option == 'x') { _%> 
    private String field1; 
    <%_ } _%> 

    private String <%= nombre %>; 

그리고 이것은 발전기 코드 :

module.exports = class extends Generator { 
    prompting() { 
    // Have Yeoman greet the user. 
    this.log(yosay(
     'Welcome to the super-duper ' + chalk.red('generator-mygenerator') + ' generator!' 
    )); 

    const prompts = [{ 
     type: 'input', 
     name: 'option', 
     message: 'Option?', 
     default: 'x' 
    }, 
    { 
     type: 'input', 
     name: 'info', 
     message: 'Field name?', 
     default: 'field' 
    } 
    ]; 

    return this.prompt(prompts).then(props => { 
     this.props = props; 
    }); 
    } 

    writing() { 
    this.fs.copyTpl(
     this.templatePath('SomeClass.java'), 
     this.destinationPath('SomeClass.java'), this.props); 
    } 
}