Können Sie bei der Installation eines Pakets mit NPM angeben, dass eine andere Version einer der Abhängigkeiten verwendet werden soll?

Angenommen, Sie möchten eine Bibliothek installierenlib-a das hat Abhängigkeitendep-1 unddep-2. Oblib-a hat in seiner package.json deklariert, eine Version von zu verwendendep-2 das ist veraltet (sagen wir, es funktioniert nicht auf dem Knoten 0.8.0, der gerade herausgekommen ist), aber es gibt einen Zweig vondep-2 das funktioniert mit Knoten 0.8.0 - Filialnamenode0.8.0.

Die Pakete in der Gleichung lauten also:

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, NPM zur Installation zu veranlassen?lib-a, aber benutzedep-2#node0.8.0 anstattdep-2?

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 das package.json von anpassen würdelib-a, könnte man sagen, es zu benutzendep-2#node0.8.0 so was:

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

Durch Ändern der package.json können Sie dann ausführen

npm install lib-a

und es wird den Knoten 0.8.0 kompatibel installierendep-2 Ast. Voraussetzung ist jedoch, dass ich Zugriff auf Änderungen habelib-a, was ich für meinen speziellen Fall nicht tue. Technisch könnte ich gabelnlib-a und nehmen Sie die obige Änderung an package.json vor. Aber in meinem speziellen Falllib-a ist eine Abhängigkeit vonEin weiterer Bibliothek, also müsste ich das Projekt, in dem es referenziert ist, verzweigen und weiter und weiter ...

Die Frage ist also, ob es eine Möglichkeit gibt, NPM die Installation anzuweisenlib-a, und sag ihm, er soll das benutzennode0.8.0 Zweig vondep-2? Etwas wie das:

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

Das wäre großartig. Wenn es nicht möglich ist, wäre es gut zu wissen, damit ich mich darauf vorbereiten kann, die Kette von Projekten zu teilen / anzupassen.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage