Yeoman: Call Sub-Generator With User-Supplied Arguments

后端 未结 3 1289
刺人心
刺人心 2021-01-31 03:37

I\'m writing my first Yeoman generator, which prompts the user for various inputs and conditionally creates files based on their responses. I need to be able to call a subrouti

3条回答
  •  南笙
    南笙 (楼主)
    2021-01-31 04:25

    You can cover all possible execution scenarios, condition checking, prompting when composing generators together if you decouple generators and use a 'main-generator' the run context loop will help you. Use the options of .composeWith('my-genertor', { 'options' : options }) for passing configurations to composed generators.

    When using .composeWith a priority group function (e.g.: prompting, writing...) will be executed for all the generators, then the next priority group. If you call .composeWith to generatorB from inside a generatorA, then execution will be, e.g.:

    generatorA.prompting => generatorB.prompting => generatorA.writing => generatorB.writing

    If you want to control execution between different generators, I advise you to create a "main" generator which composes them together, like written on http://yeoman.io/authoring/composability.html#order:

    // In my-generator/generators/turbo/index.js
    module.exports = require('yeoman-generator').Base.extend({
      'prompting' : function () {
        console.log('prompting - turbo');
      },
    
      'writing' : function () {
        console.log('prompting - turbo');
      }
    });
    
    // In my-generator/generators/electric/index.js
    module.exports = require('yeoman-generator').Base.extend({
      'prompting' : function () {
        console.log('prompting - zap');
      },
    
      'writing' : function () {
        console.log('writing - zap');
      }
    });
    
    // In my-generator/generators/app/index.js
    module.exports = require('yeoman-generator').Base.extend({
      'initializing' : function () {
        this.composeWith('my-generator:turbo');
        this.composeWith('my-generator:electric');
      }
    });
    

提交回复
热议问题