2015-04-22 17 views
10

Sto assemblando un generatore Yeoman e ho difficoltà a capire come funziona il parametro options di composeWith(). Il mio obiettivo è passare l'input dell'utente dal prompt del generatore principale ai sub-generatori e ho pensato che le opzioni fossero il modo per farlo.Usa composeCon opzioni nel sottogeneratore

mio generatore principale sta spingendo sembra qualcosa di simile:

prompting: function() { 
    var done = this.async(); 

    var prompts = [ 
     { 
     type : 'input', 
     name : 'name', 
     message : 'What is the name of your project?', 
     default : this.appname // Default to current folder name 
     } 
    ]; 

    this.prompt(prompts, function (answers) { 

     this.composeWith('app:subgenerator', { 
      options: { 
      name: answers.name; 
      } 
     }, 
     { 
      local: require.resolve('generator-angular/app') 
     }); 
     done(); 
    }.bind(this) 
) 
} 

ho provato nel mio sub-generatore per impostare una variabile locale utilizzando gli argomenti nel costruttore (perché davo per scontato che è dove sarebbero le opzioni), come questo:

module.exports = generators.Base.extend({ 
    constructor: function() { 
    generators.Base.apply(this, arguments); 
    this.foo = arguments.options.name; 
    } 
} 

Ma questo non ha funzionato. Ho provato console a registrare la variabile arguments, e mostra che le opzioni sono un oggetto, ma sembra essere vuoto.

È così che posso passare l'input dell'utente attraverso un generatore a un altro o esiste un altro modo per farlo?

risposta

7

Il tuo sub-generatore deve essere scritto proprio come si scriverebbe in quelli normali in attesa di opzioni.

module.exports = generators.Base.extend({ 
    constructor: function() { 
    generators.Base.apply(this, arguments); 

    this.option('name'); 
    }, 

    initializing: function() { 
    console.log(this.options.name) 
    } 
} 

Vedere la user interaction documentation per maggiori dettagli.

+0

Sì, quello ha fatto il trucco. Non ho capito bene come funzionavano le opzioni dalla documentazione. Grazie! –

+0

@JoshVickerson Sentiti libero di inviare un PR per chiarire la nostra documentazione, che sarebbe il benvenuto! –