我有一个位于基本生成器中的EJS模板文件,但需要能够从基本生成器和子生成器中读取选项。
module.exports = generators.Base.extend({
constructor: function() {
generators.Base.apply(this, arguments);
this.option('option1');
},
initializing: function() {
this.composeWith('base:sub-gen', this.options, {
local: require.resolve('../sub-gen'),
link: 'strong'
});
}
});
module.exports = generators.Base.extend({
constructor: function() {
generators.Base.apply(this, arguments);
this.option('option2');
},
});
Base generator option: <%=this.options.option1 %>
Sub-generator option: <%=this.options.option2 %>
有没有办法从我的ejs模板中引用子生成器选项?
除此之外,我还能如何确保我的基础发生器和我的子发生器都可以访问相同的选项列表?也许可以使用.yo-rc.json
?
答案 0 :(得分:0)
在完成更多工作后,我找到了解决方案:
configuring
步骤中设置配置,但在default
步骤中读取它们。 this.config.get('key')
或this.config.getAll()
阅读配置后,将它们保存为您要在其中使用的生成器的属性:this.imports = this.config.get('option-name')
。module.exports = generators.Base.extend({
constructor: function() {
generators.Base.apply(this, arguments);
this.option('option1');
},
initializing: function() {
this.composeWith('base:sub-gen', this.options, {
local: require.resolve('../sub-gen'),
link: 'strong'
});
},
configuring: function () {
let configs = {
option1: option1
};
this.config.set(configs);
},
default: function() {
let config = this.config.getAll()
this.imports = this.config.get('subGenOptions');
},
});
module.exports = generators.Base.extend({
constructor: function() {
generators.Base.apply(this, arguments);
this.option('option2');
},
configuring: function() {
let configs = {
subGenOptions: {
option2: this.options.option2
}
}
this.config.set(configs)
},
});
Base generator option: <%=options.option1 %>
Sub-generator option: <%=imports.option2 %>