2014-02-20 3 views
2

필자는 requireJS를 사용하여 Angular 응용 프로그램을 설정했습니다. 배포하기 전에 모든 것을 하나의 고유 한 파일로 묶습니다. 일반적으로 외부 라이브러리에는 requireJS 'define'래퍼가 없습니다.RequireJS가로드 된 외부 라이브러리를 래핑하는 방법은 무엇입니까?

는 예를 들어, 각도 시차 라이브러리는 다음과 같이 기록됩니다

require.config({ 
    baseUrl: '/angular-dev', 
    paths: { 
    angular: '//ajax.googleapis.com/ajax/libs/angularjs/1.2.13/angular.min', 
    angularScroll: 'bower_components/angular-scroll/angular-scroll.min', 
    angularParallax: 'bower_components/ng-parallax/angular-parallax.min' 
    }, 
    shim: { 
    'angular': { exports: 'angular' }, 
    'angularScroll': { deps: ['angular'] }, 
    'angularParallax': { deps: ['angular'] } 
    } 
}); 

내가 모든 번들 꿀꿀-있는 contrib-requirejs을 사용하고 있습니다 : 여기

# https://github.com/durated/angular-parallax/blob/master/angular-parallax.min.js 
angular.module("duParallax",["duScroll","duParallax.directive"... 

내 main.js입니다 라이브러리 (CDN 파일이 아닌)를 하나의 고유 파일로 변환합니다. 이것은 내가 모든 번들 후 무엇을 얻을 수 있습니다 :

angular.module("duParallax",["duScroll","duParallax.directive"... 
define("angularParallax", ["angular"], function(){}); 

을하지만 제가 기대하는 것은 내을 포장 할 수있는 코드 인 정의 :

define("angularParallax", ["angular"], function(){ 
    angular.module("duParallax",["duScroll","duParallax.directive"... 
}); 

을 나는 최신을 달성 할 수있는 방법 라이브러리 자체를 변경하지 않고 ?

편집 : 이 다른 stackoverflow 질문에 따르면, 이것이 어떻게 작동해야합니다. 그러나 나는 또한 코드를 번들 화하기 위해 grunt-contrib-requirejs를 사용하고 있는데, 이것이 문제 일 수 있습니다. 기본 r.js으로

Shim from grunt-contrib-requirejs not wrapping library

+1

죄송합니다, 제가 제거 유산이다. Angular는 사용자가 볼 수있는대로 CDN에서로드되므로 나머지 라이브러리에는 번들로 제공되지 않습니다. 그것은 생성 된 파일에서 "각도"가 아직 정의되지 않았 음을 의미하므로 "정의"내에 래핑 된 다음 "각도"가 사용 가능할 때로드 될 것으로 예상됩니다. –

+0

당신이 "모든 라이브러리를 묶는 데 grunt-contrib-requirejs를 사용하고 있습니다."라고 덧붙여서 약간의 문제가 명확 해 졌기 때문에 내 의견을 철회합니다. 그래,해야 할 일을하지 않아. 불행히도이 도구를 사용하지 않으므로 사용자가해야 할 일을 쉽게 알지 못합니다. – Louis

+0

도움을 주셔서 감사합니다. 다른 사람들을 명확히 해주기를 바랍니다. –

답변

2

가 아닌 AMD 호환 라이브러리를 포장하지 않습니다. 당신은 툴툴-requirejs-있는 contrib 설정에 다음 옵션을 추가해야 다음 '우선 순위'에 대한

wrapShim: true 
관련 문제