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 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 an npm install
, das Argument sollte auf den lokalen Ordner anstatt auf den Paketnamen verweisen:
npm install /path
rm -rf node_modules
bevor und npm 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:
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 link
den Ordner einmal ausführen (um einen globalen Symlink zu erstellen) und dann npm 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 von npm 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:
module project
Folgendes aus npm pack
:Dies wird eine <package-name>-<version>.tar.gz
Datei erstellt.
consumer project
Im Idealfall können Sie alle diese Dateien in einem tmp
Ordner in Ihrem consumer-project
Stammverzeichnis ablegen:
package.json
:"dependencies": {
"my-package": "file:/./tmp/my-package-1.3.3.tar.gz"
}
Install
die Pakete:npm install
oder npm i
oderyarn
consumer-project's node_modules
Ordner verfügbar sein .Viel Glück...
Keiner dieser Ansätze ( npm link
oder package.json
Dateiabhä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 myproject
s‘ node_modules/
wie folgt aus :
/dev/myproject/node_modules/
foo/
mymodule -> /local/mymodule
Wenn der Knoten geladen wird mymodule
und dies tut require('foo')
, löst der Knoten den mymodule
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 von mymodule
, wenn die Dateiabhängigkeit Syntax in verwendet package.json
. Ich habe leider auch keinen Weg gefunden :(
NODE_PATH
um Punkt auf dem node_modules/
wo foo
installiert ist. Für den obigen Fall wäre es also: NODE_PATH=/dev/myproject/node_modules/
Das erlaubt mymodule
zu finden foo
.
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 auf
2) main
Eigenschaft in der package.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