2012-01-21 14 views
3

私はノードにビルドスクリプトを書いています。一言で言えば、スクリプトは次のようん:handlebars.jsの式がありませんか?

  • は、情報をユーザー(などのプロジェクト名、説明、)
  • クローンテンプレートgitのレポ
  • を促し例えばcom_foo_template(そのテンプレート名からファイルの名前を変更します。 JS - > com_foo_myproject.js)
  • 私はトークンの交換ステップにHandlebars.jsを使用しようとしています

ステップ1で入力に基づいて、いくつかのテンプレートファイル内のトークンを置き換えます。

デプロイメントの第2段階があります。これにはトークンの置換も含まれます。これは私の質問の根源です。

一部のファイルでは、内部に含まれるすべてのトークンがinit-time中に置き換えられます(clone/rename/replace部分)。他のファイルでは、これらのトークンの一部のみがinit時に置き換えられ、他のものはデプロイメントステップが実行されるまで(デプロイメント日付、gitコミットハッシュなど)置換されません。次のファイルを考えてみましょう:

<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-timeで置き換える必要があります。他のトークンは展開時にのみ置き換える必要があります。

<zimletConfig name="com_foo_myproject" version=""> 
    <global> 
    <property name="allowedDomains">*.foo.com</property> 
    <property name="gitCommit"></property> 
    <property name="deployDate"></property> 
    </global> 
</zimletConfig> 

、彼らが渡されたオブジェクトに存在しない場合は、トークンを置き換えるものではありませハンドルを持ってする方法はあります:私は私の初期化ステップを実行すると、しかし、デプロイ時のトークンは空の文字列に置き換えていますか?

答えて

1

私は解決策があると思います。私はhelperMissingヘルパーを実装し、私はそれがすべきだと思うように動作するようです。

handlebars.registerHelper('helperMissing', function(token) { 
    return '{{'+token+'}}'; 

});

これが問題を解決する最良の方法であるかどうか不思議です。

関連する問題