配置管理

存储用户配置选项并在子生成器之间共享它们是一项常见的任务。例如,通常需要共享诸如语言(用户是否使用 CoffeeScript?)、样式选项(使用空格或制表符缩进)等偏好设置。

这些配置可以通过 .yo-rc.json 文件中的 Yeoman 存储 API 进行存储。此 API 可通过 generator.config 对象访问。

以下是一些您将使用的常见方法。

方法

this.config.save()

此方法会将配置写入 .yo-rc.json 文件。如果文件尚不存在,则 save 方法将创建它。

.yo-rc.json 文件还确定项目的根目录。因此,即使您没有将存储用于任何用途,也建议始终在您的 :app 生成器中调用 save

另请注意,每次您 set 配置选项时,都会自动调用 save 方法。因此,您通常不需要显式调用它。

this.config.set()

set 接受一个键和一个关联值,或者多个键/值对的对象哈希。

请注意,值必须是 JSON 可序列化的(字符串、数字或非递归对象)。

this.config.get()

getString 键作为参数,并返回关联的值。

this.config.getAll()

返回完整可用配置的对象。

返回的对象按值传递,而不是按引用传递。这意味着您仍然需要使用 set 方法来更新配置存储。

this.config.delete()

删除一个键。

this.config.defaults()

接受一个选项哈希,将其用作默认值。如果键/值对已存在,则值将保持不变。如果缺少键,则会添加它。

.yo-rc.json 结构

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

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

以下是 .yo-rc.json 文件在内部的样子

{
  "generator-backbone": {
    "requirejs": true,
    "coffee": true
  },
  "generator-gruntfile": {
    "compass": false
  }
}

该结构对您的最终用户来说非常全面。这意味着,您可能希望在此文件中存储高级配置,并在使用提示符为每个选项设置值没有意义时,要求高级用户直接编辑该文件。