it-swarm.com.de

Wie installiere ich package.json-Abhängigkeiten im aktuellen Verzeichnis mit npm

Ich habe eine Web-App: fooapp. Ich habe einen package.json In der Wurzel. Ich möchte alle Abhängigkeiten in einem bestimmten node_modules directory Installieren. Wie mache ich das?

Was ich will

Nehmen wir an, ich habe zwei widget Abhängigkeiten. Ich möchte am Ende eine Verzeichnisstruktur wie diese haben:

node_modules/
  widgetA
  widgetB
fooapp/
  package.js
  lib
  ..

Was ich bekomme

wenn ich npm install fooapp/ ausführe, bekomme ich Folgendes:

node_modules/
  fooapp/
    node_modules/
      widgetA
      widgetB
    package.js
    lib/
    ..
fooapp/
  package.js
  lib/
  ..

npm erstellt eine Kopie meines App-Verzeichnisses im Verzeichnis node_modules und installiert die Pakete im Verzeichnis another node_modules.

Ich verstehe, dass dies für die Installation eines Pakets sinnvoll ist. Aber ich require() meine Web-App nicht in etwas anderem, ich starte es direkt. Ich suche nach einer einfachen Möglichkeit, meine Abhängigkeiten in einem bestimmten node_modules-Verzeichnis zu installieren.

180

Laufen:

npm install

in Ihrem App-Verzeichnis (dh in dem sich package.json befindet) werden die Abhängigkeiten für Ihre App installiert, anstatt sie als Modul zu installieren. wie hier beschrieben . Diese werden in ./node_modules relativ zu Ihrer package.json-Datei abgelegt (es ist tatsächlich etwas komplexer als diese, überprüfen Sie also die npm-Dokumente hier ).

Es steht Ihnen frei, das Verzeichnis node_modules in das übergeordnete Verzeichnis Ihrer App zu verschieben, wenn Sie dies möchten, da der 'require'-Mechanismus des Knotens dies versteht. Wenn Sie jedoch die Abhängigkeiten Ihrer App mit install/update aktualisieren möchten, sieht npm die verschobenen 'node_modules' nicht und erstellt stattdessen ein neues Verzeichnis, wiederum relativ zu package.json.

Um dies zu verhindern, erstellen Sie einfach einen Symlink zu den verschobenen node_modules aus Ihrem App-Verzeichnis:

ln -s ../node_modules node_modules
350
ireddick

In meinem Fall muss ich tun

Sudo npm install  

mein Projekt befindet sich in/var/www, daher muss ich auch die richtigen Berechtigungen festlegen.

13
aesede