Ich möchte so etwas tun, npm install
installiert also auch die Abhängigkeiten package.json
von ../somelocallib
oder, was noch wichtiger ist.
"dependencies": {
"express": "*",
"../somelocallib": "*"
}
Diese Funktion wurde in der Version 2.0.0 von npm implementiert . Beispiel:
{
"name": "baz",
"dependencies": {
"bar": "file:../foo/bar"
}
}
Jeder der folgenden Pfade ist ebenfalls gültig:
../foo/bar
~/foo/bar
./foo/bar
/foo/bar
Das lokale Paket wird in das Präfix ( ) kopiert ../node-modules
Setzen Sie somelocallib
als Abhängigkeit in Ihre package.json
wie gewohnt:
"dependencies": {
"somelocallib": "0.0.x"
}
Führen Sie dann run aus npm link ../somelocallib
und npm installiert die Version, an der Sie arbeiten, als Symlink .
app@0.0.1 /private/tmp/app
└── somelocallib@0.0.1 -> /private/tmp/somelocallib
Referenz: Link (1)
npm dedup
, um dieses Problem zu beheben. npmjs.org/doc/cli/npm-dedupe.htmlnpm install <folder>
heißt es: Installieren Sie das Paket im Verzeichnis als Symlink im aktuellen Projekt.Es ist jetzt möglich, lokale Installationspfade für Knotenmodule
package.json
direkt in Ihrem anzugeben . Aus den Dokumenten:quelle
"bar": "file:///home/user/src/foo/bar"
node:onbuild
nur das aktuelle Verzeichnis kopieren und somit alles weglassen../foo
.npm install
oder ein anderes Git-Repository im LAN vorhanden ist? Wenn ich die obige und npm-Installation von git + ssh aus versuche, scheint sie im Verzeichnis node_modules zu suchen und nicht zu versuchen, über git + ssh zu gehen, obwohl ich auf diese Weise das Paket der obersten Ebene installiere.Das funktioniert bei mir.
Fügen Sie Folgendes in Ihre Datei package.json ein
quelle
.gitignore
im Modulordner entfernt, erstellt.npmignore
und beim ersten Ausführen 777 rekursiv auf alle Ordner außer angewendetnode_modules
. Aber ja, es hat die Abhängigkeiten installiert. Verwenden von npm Version 1.4.14."dependencies": { "my-own-module": "file:../my-own-module" }
?npm link
besteht darin, dass Sie nichtnpm install
jedes Mal etwas tun müssen, um Ihre Abhängigkeiten auf den neuesten Stand zu bringen.Wenn Sie dies weiter automatisieren möchten, weil Sie Ihr Modul in die Versionskontrolle einchecken und sich nicht darauf verlassen möchten, dass Entwickler sich an den npm-Link erinnern, können Sie dies Ihrem Abschnitt "scripts" zu package.json hinzufügen:
Das fühlt sich jenseits von Hacky an, aber es scheint "zu funktionieren". Ich habe den Tipp von dieser npm-Ausgabe erhalten: https://github.com/npm/npm/issues/1558#issuecomment-12444454
quelle
postinstall
undpostupdate
stattpreinstall
undpreupdate
?So fügen Sie lokale Abhängigkeiten hinzu:
npm install file:src/assets/js/FILE_NAME
Fügen Sie es zu package.json von NPM hinzu:
npm install --save file:src/assets/js/FILE_NAME
Fügen Sie direkt zu package.json wie folgt hinzu:
quelle
Masterprojekt
Hier ist die package.json, die Sie für das Masterprojekt verwenden werden:
Dort
./somelocallib
befindet sich der Verweis auf den Bibliotheksordner relativ zum Masterprojekt package.json .Referenz: https://docs.npmjs.com/files/package.json#local-paths
Unterprojekt
Behandeln Sie Ihre Bibliotheksabhängigkeiten.
Neben dem Laufen
npm install
müssen Sie laufen(cd node_modules/somelocallib && npm install)
.Dies ist ein bekannter Fehler bei NPM.
Referenz: https://github.com/npm/npm/issues/1341 (auf der Suche nach einer aktuelleren Referenz)
Hinweise für Docker
Checken Sie Ihren Master
package.lock
und Ihren einsomelocallib/package.lock
Quellcode-Manager ein.Dann verwenden Sie in Ihrer Docker-Datei:
Ich verwende Klammern in meinen
(cd A && B)
Konstrukten, um die Operation idempotent zu machen.quelle
Ich weiß, dass das
npm install ../somelocallib
funktioniert.Ich weiß jedoch nicht, ob die in der Frage angezeigte Syntax von
package.json
...Leider scheint doc URL nur als Abhängigkeit zu erwähnen.
Versuchen Sie
file:///.../...tar.gz
, auf eine komprimierte lokale Bibliothek zu zeigen ... und sagen Sie uns, ob es funktioniert.quelle
Das hat bei mir funktioniert: Stellen Sie zunächst sicher, dass die npm-Verzeichnisse den richtigen Benutzer haben
Dann verknüpfen Sie in Ihrer package.json das Verzeichnis
quelle
npm install
.Ab npm 2.0 werden jetzt lokale Pfade unterstützt (siehe hier ).
quelle
Neugierig ..... zumindest unter Windows (meine npm ist 3.something) musste ich tun:
Wenn ich eine machte
npm install ../module1 --save
, führte dies zu absoluten Pfaden und nicht relativ gemäß der Dokumentation.Ich spielte ein bisschen mehr herum und stellte fest, dass
../xxx
das ausreichend war.Insbesondere habe ich die lokalen Knotenmodule ausgecheckt, um d: \ build \ module1, d: \ build \ module2 und mein Knotenprojekt (Anwendung) in d: \ build \ nodeApp zu sagen.
Um 'zu installieren', ich:
package.json von module1 hat die Abhängigkeit von "module2": "../module2"; Modul2 hat keine lokale Abhängigkeit; nodeApp hat Abhängigkeiten "module1": "../module1" und "module2": "../module2".
Ich bin mir nicht sicher, ob dies nur bei mir funktioniert, da sich alle 3 Ordner (Modul1, Modul2 und NodeApp) auf derselben Ebene befinden .......
quelle
Zwei Schritte für eine vollständige lokale Entwicklung:
quelle