我正在节点中编写构建脚本。简而言之,该脚本执行以下操作:
我正在尝试使用Handlebars.js进行令牌替换步骤。
还有第二阶段的部署,也涉及令牌替换。这是我问题的根源。
在某些文件中,将在init-time(克隆/重命名/替换部分)中替换其中包含的所有标记。在其他文件中,只有部分令牌会在初始时被替换,而其他令牌在部署步骤运行之前不会被替换(如部署日期,git commit hash等)。请考虑以下文件:
<zimletConfig name="{{name}}" version="{{deploy_version}}">
<global>
<property name="allowedDomains">*.foo.com</property>
<property name="gitCommit">{{gitcommit}}</property>
<property name="deployDate">{{deploydate}}</property>
</global>
</zimletConfig>
在此文件中,只应在初始时替换{{name}};其他令牌应仅在部署时更换。但是,当我运行init步骤时,部署时令牌将替换为空字符串:
<zimletConfig name="com_foo_myproject" version="">
<global>
<property name="allowedDomains">*.foo.com</property>
<property name="gitCommit"></property>
<property name="deployDate"></property>
</global>
</zimletConfig>
如果传递的对象中不存在把手,是否有办法让把手不能替换令牌?
答案 0 :(得分:1)
我想我有一个解决方案;我实现了一个helperMissing
帮助器,它似乎像我认为的那样工作。
handlebars.registerHelper('helperMissing', function(token) {
return '{{'+token+'}}';
});
我很好奇这是否是解决问题的最佳方式。