2014-06-15 13 views
6

Ho un'applicazione, scritta in Backbone con marionette e alcune altre dipendenze, gestito attraverso pergolato:Bower esclusione dipendenza

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

voglio aggiungere Joint.js (http://www.jointjs.com/), che dipende lodash (un sostituto per underscore), ma non riesco a capire come sostituire questo nella mia configurazione, dal momento che Marionette, Backbone e alcune altre librerie dipendono direttamente da underscore. Quindi sul trattino di sottolineatura sovrascrive lodash e l'applicazione non può iniziare correttamente.

+0

Perché non si lascia 'lodash' sovrascrivere' underscore'? Le loro API dovrebbero essere compatibili. – Bergi

+0

Questo è quello che mi aspettavo, sarebbe accaduto, ma sottolineo il lodash di overrode alla fine. – mavarazy

+0

Ho cambiato l'ordine e ho inserito lodash come ultima dipendenza, e ha funzionato. Grazie per un suggerimento :) Lascerò questo fare un salto c'è un modo più pulito per farlo, altrimenti sto caricando entrambe le librerie sul client – mavarazy

risposta

4

Ho cambiato l'ordine e ho inserito lodash come ultima dipendenza, e ha funzionato.

anche come soluzione v'è la possibilità di avere un gancio Bower, come si afferma nella seguente risposta https://stackoverflow.com/a/23289270/575338

Abbiamo avuto una situazione simile dove avevamo backbone dipende sottolineatura nella sua bower.json, ma stiamo utilizzando Lo-Dash al suo posto, quindi Bower stava trascinando inutilmente Underscore per ogni installazione. Abbiamo i controlli automatici per la conformità delle licenze di terze parti, quindi non volevamo che lo non venisse effettivamente utilizzato.

Mi rendo conto che questo non è esattamente quello che stanno significato per, ma di Bower install-hooks può essere utilizzato per la pulizia non necessari deps post-installazione (almeno fino a quando Bower ottiene il tipo di risoluzione "no grazie" si ha accennato a). Nel vostro .bowerrc:

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

E 'un po' di un hack, ma funziona.

+2

Si noti che dalla versione 1.4. di Bower dovresti essere in grado di aggiungere un array ignoreDependencies a bower.json – gotofritz