2012-03-27 5 views
0

CoffeeScript를 컴파일하고 축소하고 바닐라 라이브러리를 축소하는 Cakefile을 설정하고 있습니다.Cakefile에서 작업의 메서드 호출하기

커피 파일인지 여부에 관계없이 각각의 경우마다 다른 작업을 만들었지 만 하나의 작업으로 결합하려고합니다.

내가 겪고있는 문제는 작업에서 메서드를 호출하는 것입니다. 나는 어떤 상황에서 문제없이 메소드를 호출 할 수 있지만, 그렇지 않으면 나는

TypeError: undefined is not a function 

내가

source = 
    libs: [ 
    'lib/jquery-1.7.1.min.js' 
    'lib/backbone.js' 
    'lib/underscore.js' 
    ] 
    coffees: [ 
    'app/800cart.coffee' 
    'app/models/coffee/cart.coffee' 
    'app/models/coffee/contact.coffee' 
    ] 

같은 외모에 일하고 있어요 그리고 필자는이 작업을 수행하고자하는 목적을 받고, 내가 얻을 내가 잘

0을 실행하는 조건 메소드를 호출하면 오류

task 'build', 'Concat, compile, and minify files', -> 
    for fileType, files of source 
     concatinate files 

    concatinate = (files) -> 
     console.log 'concatinating' 

정말 혼란스러워하고있어 부분은

여기서 내가 뭘 잘못하고 있니?

답변

0

concatinateconcatinate =으로 정의하기 전에 concatinate을 호출하는 것이 문제입니다. 선언을 위로 이동하거나 더 나은 방법으로 작업 정의 외부로 이동하십시오.

JavaScript의 function concatinate 구문을 사용하면 함수가 자동으로 범위의 맨 위로 이동합니다. CoffeeScript는 function cocatinate 구문이 다른 JS 런타임 (특히 IE)에서 일관성 없게 동작하므로 주로 concatinate = function 구문으로 컴파일됩니다. 따라서 CoffeeScript 함수는 일반적인 변수 할당 규칙을 따르기 만하면됩니다.

+0

우수 설명 드리겠습니다. – mgaughan

관련 문제