2012-06-27 2 views
59

Angenommen, Sie möchten eine Bibliothek lib-a mit den Abhängigkeiten dep-1 und dep-2 installieren. Wenn lib-a in seiner package.json deklariert hat, eine Version von dep-2 zu verwenden, die veraltet ist (sagen, dass es nicht auf Knoten 0.8.0 funktioniert, der gerade herauskam), aber es gibt eine Verzweigung dep-2, die mit Knoten 0.8 funktioniert .0 - Filialname node0.8.0.Wenn Sie ein Paket mit NPM installieren, können Sie ihm mitteilen, dass es eine andere Version einer seiner Abhängigkeiten verwenden soll?

So sind die Pakete in der Gleichung sind:

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 

Gibt es eine Möglichkeit zu sagen, NPM lib-a, zu installieren, aber dep-2#node0.8.0 statt dep-2 benutzen?

Mit NPM können Sie einen bestimmten Zweig eines Projekts wie folgt installieren:

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

Und wenn ich die package.json von lib-a anzupassen waren, können Sie es dep-2#node0.8.0 wie folgt zu verwenden sagen könnte:

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

Durch die package.json modifizieren können Sie dann laufen

npm install lib-a 

und es wird der Knoten 0.8.0 kompatibel dep-2 Zweig installiert. Aber, das erfordert, ich habe Zugriff auf die Änderung lib-a, die für meinen speziellen Fall nicht ich. Technisch könnte ich lib-a fork und die obige Änderung zu package.json machen. Aber in meinem speziellen Fall ist lib-a eine Abhängigkeit von anderen Bibliothek, so würde ich an das Projekt gabele es referenziert in, und so weiter ...

Die Frage ist also, ist es eine Möglichkeit, NPM anweisen, lib-a zu installieren, und ihm den node0.8.0-Zweig von dep-2 mitteilen? Etwas wie dieses:

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

Das wäre genial. Wenn es nicht möglich ist, wäre das gut zu wissen, damit ich mich darauf vorbereiten kann, die Projektkette anzupassen/anzupassen.

Antwort

42

NPM Syntax installieren:

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) 

, so dass Sie eine dieser Methoden wählen können, um Ihre Module zu installieren.

Der Fall der einfachste Weg, um eine bestimmte Version zu installieren, ist diese:

npm install [email protected] 

weitere Informationen: https://docs.npmjs.com/cli/install

+6

Es sieht aus, wie wenn Sie die Abhängigkeit zuerst installieren, dann die anderen Bibliotheken, die erforderlich Diese Abhängigkeit lädt nicht ihre eigenen herunter. Das löst das Problem! Vielen Dank! –

+1

Stimmt das? Ich probierte npm -g install/Pfad/zu/meinem/fork-with-fix und dann npm -g installieren Paket-welche-sollte-verwenden-gegabelte-Abhängigkeit-mit-fix und ... es lädt noch offizielle Version. –

+0

Werfen Sie einen Blick auf 'npm link'. – knownasilya

Verwandte Themen