wake-up-neo.com

Installation eines lokalen Moduls mit npm?

Ich habe ein Modul-Repository heruntergeladen und möchte es lokal und nicht global in einem anderen Verzeichnis installieren.

Was ist eine einfache Möglichkeit, dies zu tun?

347
fancy

du gibst nur einen <folder> Argument zu npm install , Argument sollte auf den lokalen Ordner anstatt auf den Paketnamen verweisen:

npm install /path
351
fancy

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.

430
Rich Apodaca

Da ich von derselben Person gefragt und beantwortet werde, füge ich als Alternative ein npm link hinzu.

von docs:

Dies ist praktisch, um Ihre eigenen Sachen zu installieren, damit Sie iterativ daran arbeiten und es testen können, ohne es 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"
  }
132
Luke W

Keiner dieser Ansätze (npm link Oder package.json - Dateiabhängigkeit) funktioniert, wenn das lokale Modul über Peer-Abhängigkeiten verfügt, 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 richtet npm den node_modules/ Von myproject folgendermaßen ein:

/dev/myproject/node_modules/
  foo/
  mymodule -> /local/mymodule

Wenn der Knoten mymodule lädt und require('foo') ausführt, löst der Knoten den Symlink mymodule auf und sucht dann nur in /local/mymodule/node_modules/ (Und seinen Vorfahren) nach foo, die es nicht findet. Stattdessen möchten wir, dass der Knoten in /local/myproject/node_modules/ Nachschaut, da dort unser Projekt ausgeführt wird und foo installiert ist.

Also müssen wir entweder den Knoten anweisen, nicht diesen Symlink aufzulösen, wenn wir nach foo suchen, oder wir müssen npm anweisen, copy zu installieren = von mymodule, wenn die Dateiabhängigkeitssyntax in package.json verwendet wird. Ich habe leider auch keinen Weg gefunden :(

7
Paul Medynski