2012-01-21 2 views
3

노드에 빌드 스크립트를 쓰고 있습니다. 간단히 말해서, 스크립트는 다음을handlebars.js에 누락 된 (또는 "선택적") 표현식이 있습니까?

  • 는 (정보 (프로젝트 이름, 설명 등)
  • 클론
  • 자신의 템플릿 이름에서 파일 이름을 변경 템플릿 자식의 repo를 입력하라는 메시지 예를 들어 com_foo_template. JS -> com_foo_myproject.js)
  • 내가 토큰 교체 단계 Handlebars.js를 사용하려고 해요

1 단계에서 입력에 따라 일부 템플릿 파일의 토큰을 대체합니다.

배포를위한 두 번째 단계가 있으며 토큰 대체가 필요합니다. 이것은 내 질문의 근원입니다.

일부 파일에서는 초기화 시간 (clone/rename/replace 부분) 중에 포함 된 모든 토큰이 교체됩니다. 다른 파일에서는 init-time에이 토큰 중 일부만 대체되고 다른 하나는 배포 단계가 실행될 때까지 대체되지 않습니다 (배포 날짜, 자식 커밋 해시 등). 다음 파일 고려 :이 파일에서

<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> 

을 만 {{이름}} 초기화시에 교체해야합니다; 다른 토큰은 배포시에만 교체해야합니다.

<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+'}}'; 

});

이것이 문제를 해결하는 가장 좋은 방법인지 궁금합니다.