在生成的模板中使用 yeoman-generator 变量

Using yeoman-generator variable inside generated template

我正在使用 yeoman 生成一个 angularJS 项目。我用参数调用生成器,然后通过执行以下操作从主生成器的脚本 (index.js) 中获取它:

this.argument('name', { type: String });

我可以在同一个 index.js 中使用此参数,方法是:

this.options.name

问题:我想在我的模板中使用相同的 this.options.name,这样我就可以将它的值赋给一个变量。我该怎么做?

定义一个angular常量并将其设置为此值。然后在与此视图关联的控制器内,只需注入此常量。

myApp.constant('YEOMAN_NAME', MYVALUE);

然后只需将您的常量注入与您的视图关联的控制器中,将此常量关联到范围变量并在您的模板中使用它。

现在 "hardest" 部分是如何在 angular 环境中获取此值。

我不知道你的 index.js 是什么,我想那只是与你的页面关联的主要脚本。 在这种情况下,如果您在主脚本中执行类似

this.myVariable = 'myValue';

您实际上是在为 window 对象创建一个新属性(如果您没有在某个函数中这样做)

所以你可以做的是将这个变量关联到一个 window 参数,并尽量做到最具体,这样你就不会冒着覆盖 window 中其他内容的风险,喜欢:

window.myYeomanName = this.options.name;

然后你可以在 angular 的任何地方定义你的常数:

myApp.constant('YEOMAN_NAME', window.myYeomanName);

要从 Node.js 访问 yeoman 变量,我执行了以下操作:

我将文件 connections.js 从 sails 重命名,将其重命名为 _connections.js 并将其放置在与 yeoman 生成器的文件夹 "templates" 内的 sails 文件夹相同的级别。像这样离开:

> yeomanGeneratorFolder 
>   |-app   
>      |-index.js   
>      |-templates
>        |-sails
>        |-_connections.js
>        |- ....

在发电机的 index.js 上。我创建了一个函数来在 js 文件上写入我需要的数据。我在 copyTpl() 函数中发送了一个 JSON 对象,其中包含我在新文件中需要的数据:

connections() {
      this.fs.copyTpl(this.templatePath('_connections.js'), this.destinationPath('./config/connections.js'),
      {
        dbName: this.item.dbName
      });
    }

在 _connections.js 我写道:

database: '<%=dbName%>' //optional

注意 dbName 是我在 index.js.

的 copyTpl() 函数中发送给 JSON 的密钥