2012-08-14 4 views
8

내 응용 프로그램 논리를 여러 개의 자바 스크립트 파일로 분리하여/src 폴더에 저장된 정상 및 개발자 친숙 함을 유지하려고합니다. 이 파일들은 빌드 프로세스 중에 /dist/app.js에 linted되고 연결되어야합니다. 나는 이미 빌드 과정에 쓸데없는 것을 사용하고 있는데, 이미 유용한 린트 및 연결 작업이 함께 제공되기 때문입니다.단일 자바 스크립트 파일을 쓸데없이 흘릴 때 종속성을 어떻게 해결합니까?

 

    + 
    |- grunt.js 
    |- readme 
    |-vendors 
     |-backbone.js 
    |- src 
     |- core.js 
     |- user.js 
    |- dist 
     |-app.js 

나는 성가신 문제로 실행하고 있습니다. backbone.js를 응용 프로그램 구조에 사용하고 대부분의 소스 파일은 Backbone.Model을 확장하여 모델을 정의하는 것으로 시작합니다. 이 파일을 보았을 때, JSHint는 Backbone이 정의되어 있지 않다고 불평하며, 그래서 백본은 그 자신의 디렉토리에있다. 올바른 순서로 모든 필요한 스크립트를 포함하는 것은 html로 끝났다고 가정합니다. 각 개별 소스 파일은 자체에 대해서만 알고 있어야합니다.

은 내가 거짓에 grunt.js에 보풀의 미확정 플래그를 설정하여 이러한 정의되지 않은 경고를 억제 할 수 있다는 것을 알고 있지만, 본인은 정의되지 않은 변수에 대해 경고하기 위해이 사실로 설정 유지하려면 내 응용 프로그램에서는 typos에 대한 일반적인 포인터입니다. 거기에 청결한 방법 (또는 보푸라기) 전에 그들을 linting에 포함시킬 파일이 무엇입니까? 빌드 프로세스 나 응용 프로그램 아키텍처에 문제가 있습니까? 아니면 내가 살 필요가있는 것입니까?

답변

11

jshint 옵션은 grunt.js 파일에, 당신은 당신이 사용하고있는 다른 도서관에서 오는 전역의 목록을 지정할 수 있습니다 :



    jshint: { 
     options: { 
     curly: true, 
     eqeqeq: true, 
     immed: false, 
     latedef: true, 
     newcap: true, 
     noarg: true, 
     sub: true, 
     undef: true, 
     boss: true, 
     eqnull: true, 
     browser: true 
     }, 

     globals: { 
     jQuery: true, 
     Backbone: true, 
     _: true 
     } 
    }, 

노트 하단에있는 globals 설정. 이렇게하면 JSHint가 이러한 변수를 무시하지만 위의 그림과 같이 undef: true 설정을 계속 실행합니다.

+0

딱! 감사! 이 작업을 쉽게 수행 할 수 있어야한다는 확신이 있었지만, grunt의 문서화가 명확하지 않았고 JSHint에 대한 이전 경험이 없었습니다. 다시 한 번 감사드립니다! – timkg

+2

응답에서'core.js'와 같은 것을'globals'에 추가하면 명확성을 얻는데 도움이됩니다. 웹 스트롱 (Web Storm) 관점에서 파일에 추가 할 수 있음을 알기 전에 자신의 lib에 정의 된 항목을 추가하는 방법을 궁금해했습니다. '/ * global key : value, .. * /'구문을 사용하여 단 하나의 파일에만 옵션을 추가 할 수 있다고 언급 할 수도 있습니다. – Snekse

+2

전역 변수를 이동할 때까지 계속 " 'foo'가 정의되지 않습니다. 옵션 객체 안에있는 객체. –

0

다른 방법 (즉 꿀꿀 거리는 소리에 의존하지 않음)의 js 파일에 jshint 주석을 추가하는 것입니다

/* global Backbone, jQuery, _ */ 
+1

그리고 스크립트가 전역에 값을 할당해야 할 경우 그 뒤에 공백없이': true'를 추가하십시오. 예를 들면'/ * 글로벌 백본, jQuery : 참, _ * /' –