Antworten:
Aus der npm-Link-Dokumentation :
Im lokalen Modulverzeichnis:
$ cd ./package-dir
$ npm link
Im Verzeichnis des Projekts, in dem das Modul verwendet werden soll:
$ cd ./project-dir
$ npm link package-name
Oder auf einmal mit relativen Pfaden:
$ cd ./project-dir
$ npm link ../package-dir
Dies entspricht der Verwendung von zwei Befehlen oben unter der Haube.
npm linkeine 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 an npm install, das Argument sollte auf den lokalen Ordner anstatt auf den Paketnamen verweisen:
npm install /path
rm -rf node_modulesbevor und npm installnachdem 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:
Dies ist praktisch, um Ihre eigenen Inhalte zu installieren, damit Sie daran arbeiten und sie iterativ testen können, ohne sie ständig neu erstellen zu müssen.
cd ~/projects/node-bloggy # go into the dir of your main project
npm link ../node-redis # link the dir of your dependency
[Bearbeiten] Ab NPM 2.0 können Sie lokale Abhängigkeiten in package.json deklarieren
"dependencies": {
"bar": "file:../foo/bar"
}
npm linkden Ordner einmal ausführen (um einen globalen Symlink zu erstellen) und dann npm link package-nameim 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 von npm linkergab eine doppelte Abhängigkeit, die Dinge bricht, wenn die Abhängigkeit als Singleton verwendet werden muss.
npm pack + package.jsonDas hat bei mir funktioniert:
module projectFolgendes aus npm pack:Dies wird eine <package-name>-<version>.tar.gz Datei erstellt.
consumer projectIm Idealfall können Sie alle diese Dateien in einem tmpOrdner in Ihrem consumer-projectStammverzeichnis ablegen:
package.json:"dependencies": {
"my-package": "file:/./tmp/my-package-1.3.3.tar.gz"
}
Installdie Pakete:npm installoder npm ioderyarn
consumer-project's node_modulesOrdner verfügbar sein .Viel Glück...
Keiner dieser Ansätze ( npm linkoder package.jsonDateiabhängigkeiten) funktioniert, wenn das lokale Modul Peer-Abhängigkeiten aufweist, die Sie nur im Bereich Ihres Projekts installieren möchten.
Zum Beispiel:
/local/mymodule/package.json:
"name": "mymodule",
"peerDependencies":
{
"foo": "^2.5"
}
/dev/myproject/package.json:
"dependencies":
{
"mymodule": "file:/local/mymodule",
"foo": "^2.5"
}
In diesem Szenario npm setzt auf myprojects‘ node_modules/wie folgt aus :
/dev/myproject/node_modules/
foo/
mymodule -> /local/mymodule
Wenn der Knoten geladen wird mymoduleund dies tut require('foo'), löst der Knoten den mymoduleSymlink 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 von mymodule, wenn die Dateiabhängigkeit Syntax in verwendet package.json. Ich habe leider auch keinen Weg gefunden :(
NODE_PATHum Punkt auf dem node_modules/wo fooinstalliert ist. Für den obigen Fall wäre es also: NODE_PATH=/dev/myproject/node_modules/ Das erlaubt mymodulezu finden foo.
Wie bisherige Leute geantwortet haben npm --save ../location-of-your-packages-root-directory. Das ../location-of-your-packages-root-directorymuss jedoch zwei Dinge haben, damit es funktioniert.
1) package.jsonin diesem Verzeichnis zeigte auf
2) mainEigenschaft in der package.jsonmuss gesetzt sein und funktioniert ig "main": "src/index.js",wenn die Eintragsdatei für ../location-of-your-packages-root-directoryist../location-of-your-packages-root-directory/src/index.js