2014-12-19 2 views
1

나는 돛 생성기를 만들고있어 타겟이 동적으로 템플릿을 선택하게하고 싶다. 나는 이것을 시도했다 :돛 생성기 : 가변 목표?

targets: { 
    './tests/unit/:entityType/:filename': { 
     template: scope.entityType + scope.ext, 
    } 
}, 

그러나 내가 시도 할 때이 오류가 throw됩니다. 내 대상 개체 내에서 템플릿 변수를 사용할 수도 없습니다.

생성기 구성 (내 템플릿 대상에서 다른 생성기 호출)을 사용하지 않고도 이와 같은 작업을 수행 할 수 있습니까? 거기에 targets와 파일이 require()을 통해 sails-generate에 의해로드 될 때

답변

1

scope 당신이 직접 참조하려고 오류가 발생하는 이유입니다 사용할 수 없습니다. 그러나 생성기의 before 메서드에서 동적으로 대상을 설정하여 원하는 것을 수행 할 수 있습니다. 그래서 before에 콜백을 호출하기 전에, 같은 것을 추가

module.exports.targets["./tests/unit/:entityType/:filename"] = { 
    template: scope.entityType + scope.ext, 
} 

또한 당신의 targets 개체에서 하드 코딩 대상을 제거해야 -는 사용되지 않지만 아마 혼란이 될 것이다!

+0

와우, 네가 할 수 있다는 것을 몰랐다! 비록 내가 그것을 보았지만, 그것은 완전히 합리적입니다. 아마'module.exports'의 올바른 인스턴스를 얻기 위해 자신의 파일에 가지고 있지 않고 index.js에'before' 함수를 다시 가져와야 할 것입니다. 그러나 이것이 작동 할 것이라 확신합니다. 감사! –

+0

나는'before '를 분리하여 사용하고 멋진 것을 원한다면'module.parent.exports'를 사용한다고 생각합니다 ... – sgress454