Ich habe ein Paket (package-a
), das von einem anderen Paket (package-b
) abhängt, das nicht zu npm veröffentlicht wird, aber auf meinem Dateisystem ist. Wenn ich npm install
von package-a
, package-b
laufen Abhängigkeiten sind nicht installiert. Ich muss zum Verzeichnis package-b
navigieren und npm install
manuell ausführen. Gibt es eine Möglichkeit, die Abhängigkeiten beider Pakete mit einem einzigen npm-Befehl zu installieren?`npm install` installiert keine lokalen Abhängigkeiten des lokalen Pakets
Hier ist meine Verzeichnisstruktur:
/
...
shared/
...
javascript/
...
package-b/
package.json
package-a/
package.json
Per the docs stellte ich folgendes in package-a/package.json
. (Ich verwende npm 5+)
dependencies: {
package-b: "file:../shared/javascript/package-b",
}
Als ich /package-a
navigieren und führen npm install
, es alle package-a
‚s Abhängigkeiten wie normal und auch Kopien installiert das package-b
Verzeichnis package-a/node_modules
. Vermutlich kann ich require('package-b')
statt require('../shared/javascript/package-b')
eingeben.
Aber, wie ich bereits erwähnt, package-b
s Abhängigkeiten nicht installiert, so dass, wenn ich versuche, package-a
zu verwenden, ich eine Fehlermeldung erhalten, wenn package-b
ist require
d, weil es versucht, Abhängigkeiten zu verwenden, die nicht lokal existieren.
Noch einmal, um dies zu lösen, kann ich zu package-b
navigieren und npm-install
ausführen, aber ich hoffe, es gibt eine bessere Lösung, wie ich viele solche Unterpakete haben kann und ich möchte vermeiden, ein Shell-Skript zu schreiben um alle meine Abhängigkeiten zu installieren, wenn ich das mit einem npm-Befehl machen kann. (Vielleicht habe ich nur etwas falsch und npm install
sollte arbeiten werden?)
Follow-up-Frage: Wenn ich npm install
von package-b
‚s Verzeichnis ausführen, werden die Pakete dort installiert, aber nicht in der Version von package-b
, die bekam kopiert auf /package-a/node_modules
während der ersten npm install
, noch funktioniert alles noch. So, jetzt scheint es, als wenn ich require('package-b')
es tatsächlich auf /shared/javascript/package-b
und nicht /package-a/node_modules/package-b
löst. Also, was ist der Sinn des Kopierens der Datei an erster Stelle?
aktualisieren
Es stellt sich heraus, das ist ein Fehler in npm 5. Es occurrs nur, wenn sie von einer package-lock.json
Datei zu installieren. (Github Issue)
das beantwortet meine zweite Frage (danke), aber nicht meine erste – LukeP
Stellt sich heraus, das Verhalten in Frage ist aufgrund eines Fehlers in npm. Ich werde diese Antwort jetzt akzeptieren, da sie meine zweite Frage beantwortet. – LukeP