我有一个带有一些子生成器的yeoman生成器。
我知道在调用composeWith(...).
时,我可以将选项从父代传递给子代
但是,我如何才能通过提示获得答案呢?在调用composeWith时,不可用。
例如,我在生成器中提示输入应用程序名称,并希望将其作为选项提供给所有子生成器?
实现这一点的一种方法是使用内置配置。
在";"父";生成器:
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在不同的生成器之间共享配置。在调用期间使用选项和参数在不同的生成器之间共享数据。
哦,在相关问题中发现,我可以在提示后调用子生成器,而不是初始化方法(就像在相当过时的教程中一样(