2014-06-15 11 views
6

मैं गए एप्लिकेशन, कठपुतली और कुछ अन्य निर्भरता के साथ रीढ़ में लिखा, बोवर के माध्यम से प्रबंधित:बोवर ओवरराइड निर्भरता

{ 
    "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" 
    } 
} 

मैं Joint.js (http://www.jointjs.com/), जोड़ना चाहते हैं जो पर निर्भर करता है lodash (अंडरस्कोर के लिए एक प्रतिस्थापन), लेकिन मैं यह नहीं समझ सकता कि मेरी कॉन्फ़िगरेशन में इसे कैसे बदला जाए, क्योंकि मैरियनेट, बैकबोन और कुछ अन्य पुस्तकालय सीधे अंडरस्कोर पर निर्भर करते हैं। तो लोड अंडरस्कोर पर lodash ओवरराइड, और आवेदन सही ढंग से शुरू नहीं कर सकता है।

+0

आप '' lodash' के ऊपर लिख underscore' क्यों न दें? उनका एपीआई संगत होना चाहिए। – Bergi

+0

यह वही है जो मुझे उम्मीद थी, ऐसा होगा, लेकिन अंडरस्कोर अंत में lodash overrode। – mavarazy

+0

मैंने ऑर्डर बदल दिया है, और लॉनाश को नवीनतम निर्भरता के रूप में रखा है, और यह काम करता है। धन्यवाद एक संकेत के लिए :) मैं इस हॉपिंग वहाँ यह करने के लिए एक क्लीनर तरीका है छोड़ देंगे, नहीं तो मैं पर ग्राहक – mavarazy

उत्तर

4

मैं क्रम बदल दिया है, और lodash नवीनतम निर्भरता के रूप में डाल दिया है, और यह काम किया।

इसके अलावा एक समाधान के रूप में वहाँ एक बोवर हुक करने के लिए एक विकल्प है जैसे कि यह जवाब https://stackoverflow.com/a/23289270/575338

हम एक ऐसी ही स्थिति है जहाँ हम बैकबोन अपने bower.json में अंडरस्कोर पर निर्भर था निम्नलिखित में कहा गया है, लेकिन हम अपनी जगह में लो-डैश का उपयोग कर रहे हैं, इसलिए बोवर अनावश्यक रूप से प्रत्येक इंस्टॉल के लिए अंडरस्कोर नीचे खींच रहा था। हम 3 पार्टी लाइसेंस अनुपालन के लिए स्वचालित चेकों है, इसलिए हम कुछ भी हम वास्तव में उपयोग नहीं करते नहीं चाहता था।

मुझे पता है यह वास्तव में क्या वे के लिए कर रहे हैं नहीं है, लेकिन बोवर के install-hooks से स्थापित पोस्ट (कम से कम जब तक बोवर "नहीं धन्यवाद" संकल्प आप संकेत दिया की तरह हो जाता है अनावश्यक deps साफ करने के लिए इस्तेमाल किया जा सकता पर)। अपने .bowerrc:

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

यह एक हैक का एक सा है, लेकिन काम करता है।

+2

नोट दोनों पुस्तकालयों लोड हो रहा रहा है कि संस्करण 1.4 से। बॉवर का आप अपने bower.json पर एक अनदेखा निर्भरता सरणी जोड़ने में सक्षम होना चाहिए – gotofritz

संबंधित मुद्दे