Ich habe ein heruntergeladenes Modul-Repo. Ich möchte es lokal installieren, nicht global in einem anderen Verzeichnis.
Was ist ein einfacher Weg, dies zu tun?
javascript
node.js
npm
packages
npm-install
schick
quelle
quelle
npm link
eine zweite Instanz externer Abhängigkeiten erstellt wird. Wenn Sie also ein Paket A haben, das B und C benötigt, benötigt B C. Wenn Sie B verknüpfen, hat Anwendung A zwei Instanzen von C.Sie geben nur ein
<folder>
Argument annpm install
, das Argument sollte auf den lokalen Ordner anstatt auf den Paketnamen verweisen:quelle
rm -rf node_modules
bevor undnpm install
nachdem Sie das Skript der Antwort ausgeführt haben.Da ich von derselben Person gefragt und beantwortet wurde, füge ich einen npm-Link hinzu alternativ .
aus docs:
[Bearbeiten] Ab NPM 2.0 können Sie lokale Abhängigkeiten in package.json deklarieren
quelle
npm link
den Ordner einmal ausführen (um einen globalen Symlink zu erstellen) und dannnpm link package-name
im Ordner des Projekts ausführen (um den globalen Symlink in Ihrem Projekt zu verwenden). Die Antwort unten ist die richtige Antwort.file:
Ansatzes) ermöglichte es meiner App und dem lokalen Modul, eine Abhängigkeit gemeinsam zu nutzen. Mein Test vonnpm link
ergab eine doppelte Abhängigkeit, die Dinge bricht, wenn die Abhängigkeit als Singleton verwendet werden muss.npm pack
+package.json
Das hat bei mir funktioniert:
SCHRITT 1: Führen Sie
module project
Folgendes ausnpm pack
:Dies wird eine
<package-name>-<version>.tar.gz
Datei erstellt.SCHRITT 2: Verschieben Sie die Datei in die
consumer project
Im Idealfall können Sie alle diese Dateien in einem
tmp
Ordner in Ihremconsumer-project
Stammverzeichnis ablegen:SCHRITT 3: Lesen Sie es in Ihrem
package.json
:SCHRITT 4:
Install
die Pakete:npm install
odernpm i
oderyarn
Ihr Paket sollte in Ihrem
consumer-project's node_modules
Ordner verfügbar sein .Viel Glück...
quelle
Keiner dieser Ansätze (
npm link
oderpackage.json
Dateiabhängigkeiten) funktioniert, wenn das lokale Modul Peer-Abhängigkeiten aufweist, die Sie nur im Bereich Ihres Projekts installieren möchten.Zum Beispiel:
In diesem Szenario npm setzt auf
myproject
s‘node_modules/
wie folgt aus :Wenn der Knoten geladen wird
mymodule
und dies tutrequire('foo')
, löst der Knoten denmymodule
Symlink auf und sucht dann nur nach/local/mymodule/node_modules/
(und seinen Vorfahren)foo
, nach denen er nicht findet. Stattdessen möchten wir, dass der Knoten nachschaut/local/myproject/node_modules/
, da dort und wo unser Projekt ausgeführt wurdefoo
installiert wurde.Also müssen wir entweder einen Weg Knoten zu sagen, nicht dieses Symlink lösen , wenn Sie suchen
foo
, oder wir müssen einen Weg npm anweisen , eine Installation Kopie vonmymodule
, wenn die Dateiabhängigkeit Syntax in verwendetpackage.json
. Ich habe leider auch keinen Weg gefunden :(quelle
NODE_PATH
um Punkt auf demnode_modules/
wofoo
installiert ist. Für den obigen Fall wäre es also:NODE_PATH=/dev/myproject/node_modules/
Das erlaubtmymodule
zu findenfoo
.Vermissen Sie das Haupteigentum?
Wie bisherige Leute geantwortet haben
npm --save ../location-of-your-packages-root-directory
. Das../location-of-your-packages-root-directory
muss jedoch zwei Dinge haben, damit es funktioniert.1)
package.json
in diesem Verzeichnis zeigte auf2)
main
Eigenschaft in derpackage.json
muss gesetzt sein und funktioniert ig"main": "src/index.js",
wenn die Eintragsdatei für../location-of-your-packages-root-directory
ist../location-of-your-packages-root-directory/src/index.js
quelle