2014-06-15 6 views
6

재정 의존성 : 나는 Joint.js (http://www.jointjs.com/)를 추가 할는 정자 나 응용 프로그램, 마리오네트 및 다른 종속성 백본 작성, <strong>이물</strong>를 통해 관리 한

{ 
    "name": "admin", 
    "version": "0.1.1", 
    "main": "public/javascripts/app.js", 
    "dependencies": { 
    "lodash": "~2.4.1", 
    "console-polyfill": "~0.1.0", 
    "jquery": "~2.1.1", 
    "normalize-css": "~2.1.2", 
    "marionette": "~1.7.4", 
    "bootstrap": "~3.1.1", 
    "font-awesome": "~4.1.0", 
    "backbone-pageable": "~1.4.5", 
    "moment": "~2.5.1", 
    "swag": "~0.6.1", 
    "jquery-form": "~3.46.0", 
    "jquery-file-upload": "~9.5.7", 
    "underscore.string": "~2.3.3", 
    "bootstrap-switch": "~3.0.1", 
    "joint": "~0.9.0" 
    }, 
    "overrides": { 
    "backbone": { 
     "dependencies": { 
     "lodash": "*", 
     "jquery": "*" 
     }, 
     "main": "backbone.js" 
    }, 
    "backbone.wreqr": { 
     "dependencies": { 
     "backbone": "*" 
     }, 
     "main": "lib/amd/backbone.wreqr.js" 
    }, 
    "backbone-pageable": { 
     "dependencies": { 
     "backbone": "*" 
     }, 
     "main": "lib/backbone-pageable.js" 
    }, 
    "jquery-file-upload": { 
     "dependencies": { 
     "jquery": "*" 
     }, 
     "main": [ 
     "js/vendor/jquery.ui.widget.js", 
     "js/jquery.iframe-transport.js", 
     "js/jquery.fileupload.js" 
     ] 
    }, 
    "underscore.string": { 
     "dependencies": { 
     "lodash": "*" 
     }, 
     "main": "lib/underscore.string.js" 
    }, 
    "joint": { 
     "dependencies": { 
     "lodash": "*" 
     }, 
     "main": "dist/joint.clean.js" 
    } 
    }, 
    "resolutions": { 
    "jquery": "~2.1.1" 
    } 
} 

은에 따라 다릅니다 lodash (의 밑줄의 대체품)이지만 Marionette, Backbone 및 일부 다른 라이브러리는 밑줄에 직접 의존하기 때문에이 구성을 어떻게 바꿀 수 있는지 알 수 없습니다. 따라서로드 밑줄은 lodash를 무시하고 응용 프로그램을 올바르게 시작할 수 없습니다.

+0

'로다시'가 '밑줄'을 덮어 쓰게하는 이유는 무엇입니까? API는 호환 가능해야합니다. – Bergi

+0

이것은 내가 예상했던 일이지만 일어날 것입니다. 그러나 밑줄은 끝에서 로다시를 과장합니다. – mavarazy

+0

나는 순서를 바꾸었고 최근의 의존 관계로 lodash를 넣었고 효과가 있었다. 힌트를 가져 주셔서 감사합니다 :)이 호핑을 거기에 남겨 두는 것이 더 깨끗한 방법입니다. 그렇지 않으면 클라이언트에서 두 라이브러리를 모두로드 할 것입니다. – mavarazy

답변

4

나는 순서를 바꾸고 lodash를 최신 의존성으로 넣었다. 우리가 우리가 백본은 bower.json에 밑줄 에 의존했다 비슷한 상황이 있었다 https://stackoverflow.com/a/23289270/575338

대답 다음 상태처럼

는 또한 솔루션으로,하는 이물 후크를 할 수있는 옵션이 있지만, 우리는 대신 Lo-Dash를 사용하기 때문에 Bower 은 불필요하게 각 설치에 대해 Underscore를 사용하지 않았습니다. 제 3 자 라이센스 준수를위한 자동 검사가 있으므로 실제로 사용하지 않는 것은 원하지 않습니다.

나는 이것이 그들이 의미 정확히 무엇을하지 실현하지만, 정자의 install-hooks 는 정자 당신이 암시 "아니오 감사"해상도의 종류를 얻을 적어도까지 (설치 후 불필요한 deps 청소하는 데 사용할 수 있습니다 에서). 에 .bowerrc :

{ 
    "directory": "app/bower_components", 
    "scripts": { 
     "postinstall": "rm -rf app/bower_components/underscore" 
    } 
} 

그것은 해킹 조금,하지만 작동합니다.

+2

버전 1.4부터 유의하십시오. Bower의 ignoreDependencies 배열을 bower.json에 추가 할 수 있어야합니다. – gotofritz