2014-06-15 20 views
6

Mam aplikacji, napisane w sieci szkieletowej z Marionette i niektórych innych uzależnień, zarządzany przez altana:Bower zależność przesłanianie

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

chcę dodać Joint.js (http://www.jointjs.com/), który zależy od lodash (zamiennik dla podkreślenia), ale nie mogę wymyślić, jak to zmienić w mojej konfiguracji, ponieważ Marionetka, Szkielet i niektóre inne biblioteki zależą bezpośrednio od podkreślenia. W ten sposób na podkreślenie obciążenia przesłonić miejsce, a aplikacja nie może rozpocząć się poprawnie.

+0

Dlaczego nie pozwalasz 'lodash' nadpisać' podkreślenie'? Ich interfejs API powinien być zgodny. – Bergi

+0

Tego właśnie się spodziewałem, ale podkreślę na końcu. – mavarazy

+0

Zmieniłem kolejność i umieściłem Lodasha jako ostatnią zależność, i zadziałało. Dzięki za podpowiedź :) Zostawię to przeskakiwanie tam jest czystszy sposób to zrobić, inaczej ładuję obie biblioteki na kliencie – mavarazy

Odpowiedz

4

Zmieniłem kolejność i umieściłem LASAKA jako ostatnią zależność i zadziałało.

także jako rozwiązanie istnieje możliwość, aby mieć haka altana, jak stwierdza się w następujących odpowiedzi https://stackoverflow.com/a/23289270/575338

Mieliśmy podobną sytuację, gdzie mieliśmy Backbone zależą podkreślenia w bower.json, ale używamy Lo-Dash zamiast tego, więc Bower niepotrzebnie ściągał Downsecore dla każdej instalacji. Mamy automatyczne sprawdzanie pod kątem zgodności z licencjami stron trzecich, więc nie chcieliśmy, abyśmy otrzymywali tylko to, czego faktycznie nie używamy.

Zdaję sobie sprawę, to nie jest dokładnie to, co oni oznaczało dla, ale Bower na install-hooks może być używany do czyszczenia niepotrzebnych deps po instalacji (przynajmniej dopóki Bower dostaje coś w rodzaju „nie, dziękuję” rozdzielczości pan zasugerował w). W twojej .bowerrc:

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

Jest to bit hack, ale działa.

+2

Zauważ, że od wersji 1.4. Bowera powinieneś móc dodać tablicę ignoreDependencies do swojej bower.json – gotofritz