【问题标题】:Yeoman invoke generator by code with argsYeoman 通过带有 args 的代码调用生成器
【发布时间】:2020-06-17 20:36:33
【问题描述】:

我有带有子生成器的 yeoman 生成器。 我需要通过代码调用子生成器,我使用下面的代码正在工作,我看到子生成器被调用并且我在终端中得到了问题。

文档: https://yeoman.io/authoring/integrating-yeoman.html

var yeoman = require('yeoman-environment');
var env = yeoman.createEnv();


env.lookup(function () {
    env.run('main:sub',err => {
        console.log('done' ,err);
    });
});

子生成器只有一个问题

 prompting() {

    const prompts = [
      {
        name: "app",
        message: "which app to generate?",
        type: "input",
        default: this.props.app,
      },
    ];

...

我想静默调用它,这意味着通过代码传递app 的值,而不是使用终端,我尝试这个不起作用,(我在终端)

env.lookup(function () {
    env.run('main:sub',{"app":"nodejs"}, err => {
        console.log('done' ,err);
    });
});

也试过这个不起作用

env.lookup(function () {
    env.run('main:sub --app nodejs', err => {
        console.log('done' ,err);
    });
});

我该怎么做?使用代码传递值(可能就像在单元测试中完成但此代码不是单元测试......当终端未被调用时) 从文档中我不确定如何传递值 https://yeoman.io/authoring/integrating-yeoman.html

我也找到了这个,但不太明白如何使用它将参数传递给生成器 http://yeoman.github.io/environment/Environment.html#.lookupGenerator 是否可以?

【问题讨论】:

    标签: javascript node.js typescript yeoman yeoman-generator


    【解决方案1】:

    你可以这样做:

    env.lookup(function () {
        env.run('main:sub',{"app":"nodejs"}, err => {
            console.log('done' ,err);
        });
    });
    

    sub 子生成器中,您可以通过this.options.app 找到值。

    要禁用问题提示,请在 Question Object 中定义 when 字段,如下所示:

    prompting() {
    
        const prompts = [
          {
            name: "app",
            message: "which app to generate?",
            type: "input",
            default: this.props.app,
            when: !this.options.app
          },
        ];
    
        . . .
    
        return this.prompt(prompts).then((props) => {
          this.props = props;
    
          this.props.app = this.options.app || this.props.app;
    
        });
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-08
      • 2014-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多