2014-12-18 1 views
0

저는 requirejs를 사용하는 프로젝트에서 작업하고 있습니다. 자바 스크립트를 공급 업체 라이브러리와 앱 코드로 최적화하려고합니다. 불행히도, 나는 그것이 작동하도록 할 수 없습니다.requirejs를 사용하여 공급 업체 파일과 앱 파일로 자바 스크립트를 최적화하려고합니다.

폴더 구조 :

  • backbone_components/
  • 응용 프로그램/
    • 이하/
    • JS/
      • 컴포넌트 1/
      • 컴포넌트 2/
      • 레이아웃/
        • 대시 보드/
        • 에 대한/
      • lib 디렉토리/
      • config.js
      • main.js
    • index.html을
  • dist/
  • Gruntfile.js

config.js :

require.config({ 
    baseUrl: '../js/', 
    paths: { 
    jquery:  '../../bower_components/jquery/dist/jquery', 
    underscore: '../../bower_components/lodash/dist/lodash', 
    backbone: '../../bower_components/backbone/backbone', 
    text:  '../../bower_components/requirejs-text/text' 
    }, 
    enforeceDefine: true 
}); 

define(['backbone', 'main'], function(Backbone, app) { 
}); 

Gruntfile.js :

requirejs: { 
    options: { 
    dir: 'dist/js/', 
    mainConfigFile: 'app/js/config.js', 
    optimize: 'none', 
    normalizeDirDefines: 'all', 
    skipDirOptimize: true 
    }, 
    dist: { 
    options: { 
     modules: [ 
     { 
      name: 'vendor', 
      include: ['jquery', 'underscore', 'backbone', 'text'], 
     }, 
     { 
      name: 'app', 
      exclude: ['vendor'] 
     } 
     ] 
    } 
    } 
}); 

내가 grunt를 실행하면, 나는 다음과 같은 오류가 발생합니다 : "오류 : 오류 : E RROR : 모듈 경로가 존재하지 않습니다 : /path/to/project/app/js/app/js/vendor.js라는 이름의 모듈 : vendor. "

"공급 업체"가 아직 존재하지 않는 이유는 무엇입니까?

답변

1

최적화 할 소스에 vendor이라는 모듈이 없다고 생각합니다. 이것이 맞으면 r.js은 이라는 모듈을 찾고이므로 오류가 발생합니다.

modules: [ 
    { 
     name: 'vendor', 
     create: true,   // <--- Add this option! 
     include: ['jquery', 'underscore', 'backbone', 'text'] 
    }, 
    { 
     name: 'app', 
     exclude: ['vendor'] 
    } 
] 

r.js가 효과적으로 "는 vendor 모듈을 등이 jquery으로 포함"말을 할 수 이해하는 옵션을 사용하지 않으면 : 당신은 create 옵션을을 만들 에 말할 필요 이 옵션을 사용하면 처음부터 vendor을 생성하라는 메시지가 표시됩니다.

create 옵션에 대한 설명은 in this file입니다.

+0

루이.귀하의 의견이 들어 왔을 때 "만들기"에 대해서 읽는 중이었습니다. – jbarreiros

+0

호기심에서 벗어나 모든 자바 스크립트 파일이 "dist/js"에 복사됩니다. 나는 vendor.js와 main.js 만 거기에있을 것으로 예상했다. 나는 다른 것을 놓쳤는가? – jbarreiros

+1

'removeCombined : true' 나는 생각합니다. 'create'와 같은 파일에서 문서화 된 것을 찾을 수 있습니다. – Louis