您可以在Yeoman模板中调用方法,代替通常注入templateData属性的位置吗?
我希望在模板中多次生成随机guid。在我的_Product.xml模板文件中,我有: -
<someNode value="<%= randomGuid %>">
<someNode value="<%= randomGuid %>">
<someNode value="<%= randomGuid %>">
<someNode value="<%= randomGuid %>">
<someNode value="<%= randomGuid %>">
然后在我的自动生成器中,我有: -
_buildTemplateData() {
this.templatedata.randomGuid = uuid.v4();
}
writeToDisk() {
this.fs.copyTpl(this.templatePath('_Product.xml'), this.destinationPath('Product.xml'), this.templatedata);
}
我希望得到: -
<someNode value="43EE86E4-AC19-4A82-A053-7FE0857AB1F5"/>
<someNode value="7F7184CF-23A7-4383-B5BB-E3A383BC6A0A"/>
<someNode value="5B7A26C1-A449-4B35-94E3-D214C62CEAD7"/>
<someNode value="641D7EC0-AFB1-4646-8B52-5DC71B8FFC50"/>
<someNode value="CEB94BA1-D487-4838-A354-FAFB4D8B188A"/>
但我得到了: -
<someNode value="43EE86E4-AC19-4A82-A053-7FE0857AB1F5"/>
<someNode value="43EE86E4-AC19-4A82-A053-7FE0857AB1F5"/>
<someNode value="43EE86E4-AC19-4A82-A053-7FE0857AB1F5"/>
<someNode value="43EE86E4-AC19-4A82-A053-7FE0857AB1F5"/>
<someNode value="43EE86E4-AC19-4A82-A053-7FE0857AB1F5"/>
我知道我可以创建一堆Guids作为templateData的属性,并将它们全部传入,单独引用每个,但我想避免这种情况,因为我不需要在产品之外重用guid。 xml文件,我想尽可能减少代码。 我也希望用函数调用来做类似的事情....但这是在这里发布的更基本的例子。
有什么想法吗? 感谢
答案 0 :(得分:2)
是的,这是可能的。将函数作为模板上下文传递:
precision@n
然后在模板中调用它:
this.fs.copyTpl(a, b, {
getUuid: () => uuid.v4()
});