Yeoman将提示答案传递给子生成器



我有一个带有一些子生成器的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在不同的生成器之间共享配置。在调用期间使用选项和参数在不同的生成器之间共享数据。

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

最新更新