【问题标题】:Yeoman pass prompt answers to subgeneratorYeoman 将提示答案传递给子生成器
【发布时间】:2022-08-11 15:33:54
【问题描述】:

我有一个带有一些子生成器的 yeoman 生成器。

我知道我可以在调用composeWith(...). 时将选项从父生成器传递给子生成器

但是我怎样才能传递我从提示中得到的答案呢?在调用 composeWith 时不可用。

例如,我在生成器中提示输入应用程序名称,并希望将其作为选项提供给所有子生成器?

    标签: yeoman yeoman-generator


    【解决方案1】:

    哦,在相关问题中发现我可以在提示后调用子生成器,而不是初始化方法(如在相当过时的教程中)

    【讨论】:

      【解决方案2】:

      一种方法是使用built-in config

      在“父”生成器中:

      configuring(){
          this.log('Saving configuration in .yo-rc.json')
          const answers = this.answers.answers()
          for(const key in answers){
              this.config.set(key, answers[key])
          }
          this.config.save()
      }
      

      在“子”生成器中,填充模板:

          const templateData = {
              ...this.config.getAll(),
              ...
          }
          this.fs.copyTpl(
              this.templatePath(),
              this.destinationPath(),
              templateData
          )
      

      这应该足够简单,可以根据您的用例进行更改,例如,您可能希望在子生成器中使用this.config.get(something)

      请注意,这将不起作用不同的发电机;仅在生成器与其自己的子生成器:

      .yo-rc.json 文件是一个 JSON 文件,其中存储了来自多个生成器的配置对象。每个生成器配置都有命名空间,以确保生成器之间不会发生命名冲突。

      这也意味着每个生成器配置都是沙盒的,并且只能在子生成器之间共享。您不能使用存储 API 在不同的生成器之间共享配置。在调用期间使用选项和参数在不同的生成器之间共享数据。

      【讨论】:

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