1351 Stimmen

Wo werden npm-Pakete installiert?

Kann mir jemand sagen, wo ich die Node.js-Module finden kann, die ich mit npm installiert habe?

4voto

edelans Punkte 7439

Aus den Dokumenten:

In npm 1.0 gibt es zwei Möglichkeiten, Dinge zu installieren:

  • global —- Dies platziert Module in {prefix}/lib/node_modules und legt ausführbare Dateien in {prefix}/bin ab, wobei {prefix} normalerweise etwas wie /usr/local ist. Es installiert auch Handbücher in {prefix}/share/man, wenn sie bereitgestellt werden.

  • lokal —- Dies installiert Ihr Paket im aktuellen Arbeitsverzeichnis. Node-Module werden in ./node_modules abgelegt, ausführbare Dateien in ./node_modules/.bin/ und Handbücher werden überhaupt nicht installiert.

Sie können Ihr {prefix} mit npm config get prefix erhalten. (Nützlich, wenn Sie Node mit nvm installiert haben).

4voto

Windows 10: Als ich npm prefix -g ausführte, bemerkte ich, dass der Installationsort innerhalb des Git-Shell-Pfads lag, den ich verwendet hatte. Selbst als dieser Ort zum Pfad hinzugefügt wurde, wurde der Befehl aus dem global installierten Paket nicht erkannt. Behoben durch:

  1. npm config edit ausführen
  2. Prefix in 'C:\Users\Benutzername\AppData\Roaming\npm' ändern
  3. diesen Pfad zur Systempfadvariable hinzufügen
  4. das Paket mit -g neu installieren.

3voto

Randall Flagg Punkte 4526

Von den Docs:

Pakete werden unter dem Präfix in den node_modules-Ordner abgelegt. Bei einer lokalen Installation bedeutet dies, dass Sie require("paketname") verwenden können, um sein Hauptmodul zu laden, oder require("paketname/lib/pfad/zum/untermodul") um andere Module zu laden.

Globale Installationen auf Unix-Systemen gehen nach {prefix}/lib/node_modules. Globale Installationen auf Windows gehen nach {prefix}/node_modules (das heißt, ohne lib-Ordner.)

Gebündelte Pakete werden auf dieselbe Weise installiert, außer dass sie in einem Unterordner des entsprechenden node_modules-Ordners gruppiert werden, der mit dem Namen des Scope-Präfixes durch das @-Symbol gekennzeichnet ist, z.B. würde npm install @myorg/paket das Paket in {prefix}/node_modules/@myorg/paket platzieren. Details finden Sie unter Scope.

Wenn Sie ein Paket mit require() verwenden möchten, dann installieren Sie es lokal.

Sie können Ihr {prefix} mit npm config get prefix erhalten. (Nützlich, wenn Sie Node mit nvm installiert haben).

Lesen Sie mehr über lokal.
Lesen Sie mehr über global.

3voto

Ashutosh Singh Punkte 571

In Ubuntu 14.04 sind sie installiert unter

/usr/lib/node_modules

1voto

A T Punkte 11608

Wenn Sie versuchen, auf Ihr globales Verzeichnis aus dem Code zuzugreifen, können Sie von process.execPath zurückgehen. Zum Beispiel, um wsproxy zu finden, das sich in {NODE_GLOBAL_DIR}/bin/wsproxy befindet, können Sie einfach:

path.join(path.dirname(process.execPath), 'wsproxy')

Es gibt auch, wie der npm CLI funktioniert @ ec9fcc1/lib/npm.js#L254 mit:

path.resolve(process.execPath, '..', '..')

Siehe auch ec9fcc1/lib/install.js#L521:

var globalPackage = path.resolve(npm.globalPrefix,
                                 'lib', 'node_modules', moduleName(pkg))

Wo globalPrefix standardmäßig in ec9fcc1/lib/config/defaults.js#L92-L105 gesetzt ist:

if (process.env.PREFIX) {
    globalPrefix = process.env.PREFIX
} else if (process.platform === 'win32') {
    // c:\node\node.exe --> prefix=c:\node\
    globalPrefix = path.dirname(process.execPath)
} else {
    // /usr/local/bin/node --> prefix=/usr/local
    globalPrefix = path.dirname(path.dirname(process.execPath))

    // destdir wird nur auf Unix beachtet
    if (process.env.DESTDIR) {
        globalPrefix = path.join(process.env.DESTDIR, globalPrefix)
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X