YEOMAN在一个函数中运行多个子生成器

时间:2016-02-08 13:34:30

标签: yeoman yeoman-generator

我有一个基于角度的发生器,带有三个子发生器,用于控制器指令和服务。我想运行一个带有NAME变量/输入的函数,同时运行所有这三个函数,而不必分别运行每个函数。

1 个答案:

答案 0 :(得分:0)

Yeoman提供composeWith()docs),您可以使用它来调用其他(子)生成器。

'use strict';

var generators = require('yeoman-generator');

module.exports = generators.Base.extend({
  constructor: function () {
    generators.Base.apply(this, arguments);
    this.argument('theName', {
      type: String,
      required: true
    });
  },

  initializing: function() {
    this.composeWith('my-generator:mysubgen1', { args: [this.theName] });
    this.composeWith('my-generator:mysubgen2', { args: [this.theName] });
  }
});

在上面的示例中,我假设您的生成器名为my-generator,并且有两个子生成器(mysubgen1mysubgen2)。

上面的代码将进入第三个子生成器,例如doall。如果你调用$ yo my-generator:doall foobar,它现在将运行两个组合的子生成器,并将foobar作为第一个参数传递。