存储用户配置选项并在子生成器之间共享它们是一项常见的任务。例如,通常需要共享诸如语言(用户是否使用 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()
get
以 String
键作为参数,并返回关联的值。
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
}
}
该结构对您的最终用户来说非常全面。这意味着,您可能希望在此文件中存储高级配置,并在使用提示符为每个选项设置值没有意义时,要求高级用户直接编辑该文件。