2012-06-27 11 views
59

Dire di voler installare una libreria lib-a che ha dipendenze dep-1 e dep-2. Se lib-a ha dichiarato nel suo package.json di utilizzare una versione di dep-2 non aggiornata (ad esempio, non funziona sul nodo 0.8.0 appena uscito), ma esiste un ramo di dep-2 che funziona con il nodo 0.8 .0 - nome della filiale node0.8.0.Quando si installa un pacchetto con NPM, si può dire di usare una versione diversa di una delle sue dipendenze?

Così i pacchetti nell'equazione sono:

git://github.com/user-a/lib-a 
git://github.com/user-b/dep-1 
git://github.com/user-c/dep-2 
git://github.com/user-c/dep-2#node0.8.0 

C'è un modo per dire NPM installare lib-a, ma utilizzare dep-2#node0.8.0 invece di dep-2?

Con NPM è possibile installare un ramo specifico di un progetto come questo:

npm install git://github.com/user-c/dep-2#node0.8.0 

E se dovessi personalizzare l'package.json di lib-a, si potrebbe dire che per utilizzare dep-2#node0.8.0 come questo:

{ 
    "name": "lib-a", 
    "dependencies": { 
    "dep-1": ">= 1.5.0", 
    "dep-2": "git://github.com/user-c/dep-2#node0.8.0" 
    } 
} 

modificando la package.json è quindi possibile eseguire

npm install lib-a 

e installerà il ramo 0.82 compatibile con il ramo dep-2. Ma ciò richiede che io abbia accesso alla modifica di lib-a, che per il mio caso specifico non lo faccio. Tecnicamente, potrei inserire lo lib-a e apportare la suddetta modifica a package.json. Ma nel mio caso specifico, lib-a v'è una dipendenza di un'altra biblioteca, quindi avrei dovuto sborsare il progetto è fatto riferimento nel, e così via ...

Quindi la domanda è, è un modo per comunicare a NPM di installare lib-a e dirgli di utilizzare il ramo node0.8.0 di dep-2? Qualcosa del genere:

npm install lib-a --overrides dep-2:git://github.com/user-c/dep-2#node0.8.0 

Sarebbe fantastico. Se non è possibile, sarebbe bello saperlo, così posso prepararmi a forgiare/personalizzare la catena dei progetti.

risposta

42

NPM installare sintassi:

npm install (with no args in a package dir) 
npm install <tarball file> 
npm install <tarball url> 
npm install <folder> 
npm install [@<scope>/]<name> [--save|--save-dev|--save-optional] [--save-exact] 
npm install [@<scope>/]<name>@<tag> 
npm install [@<scope>/]<name>@<version> 
npm install [@<scope>/]<name>@<version range> 
npm i (with any of the previous argument usage) 

Così si può scegliere uno di questi metodi per installare i moduli.

Il caso del modo più semplice per installare una versione specifica è questa:

npm install [email protected] 

maggiori informazioni: https://docs.npmjs.com/cli/install

+6

Sembra che se si installa la dipendenza prima, poi le altre librerie che richiedono quella dipendenza non scaricherà i propri. Questo risolve il problema! Grazie! –

+1

È corretto? Ho provato npm -g install/path/to/my/fork-with-fix e poi npm -g pacchetto di installazione-which-should-use-forked-dependency-with-fix e ... scarica ancora la versione ufficiale. –

+0

Dai un'occhiata a 'npm link'. – knownasilya

Problemi correlati