2012-06-11 5 views
17

Ich möchte Pakete lokal installieren, aber npm installiert immer Pakete zum globalen Speicherort. Ich bin mit dem folgenden Befehl ein:npm wird Pakete nicht lokal installieren. Was ist los mit dir?

npm install serialport 

Ich habe keinen .npmrc Befehl habe, und ich bin nicht die Option -g verwenden, so dass ich weiß nicht, warum es nicht lokal installieren. Hier ist ein Ausschnitt aus dem Konfigurationsdump, der anzeigt, dass global falsch ist: $ npm config ls -l | grep global global = false GlobalConfig = "/ usr/local/etc/npmrc" globalignorefile = "/ usr/local/etc/npmignore"

Und die Pakete immer noch wie dies

[email protected] ../../../../node_modules/serialport 
installiert werden

Also, wenn ich mich nicht völlig irre, was "lokal" bedeutet, scheint das falsch zu sein. Ich hatte den Eindruck, dass "local" im aktuellen Arbeitsverzeichnis gemeint war, damit ich in meiner Hauptcodedatei ein "require" machen konnte. Siehe: http://blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation/ wie in einer vorherigen npm-ähnlichen Frage referenziert.

Kann mir bitte jemand etwas dazu sagen? Vielen Dank.

P.S. Es ist nicht spezifisch für das Serialport-Modul. Es passiert mit allen von ihnen.

Antwort

29

können Die meisten meiner Antwort zu finden: http://npmjs.org/doc/folders.html#More-Information

Was ich verstehe, ist, dass npm es in einer vernünftigen Position zu installieren versuchen. Wenn Sie also ein Verzeichnis project/node_modules haben und sich in/project befinden und npm installieren, wird product/node_modules verwendet.

Jetzt, wenn Sie versehentlich eine CD project/css und tun npm installieren, dann wird npm durchlaufen, bis es Ihre node_modules Verzeichnis findet. Dies verhindert, dass Sie es versehentlich in Ihrem project/css installieren.

In Ihrem Fall haben Sie also ein Verzeichnis node_module irgendwo im Pfad Ihres Projekts. Also meine Vermutung ist, dass Sie es beheben können, indem Sie entweder das Verzeichnis löschen oder manuell ein node_modules Verzeichnis in Ihrem Projektordner erstellen.

+0

Ja, ich finde nur, dass ich und versuchte, meine eigene Frage zu beantworten, aber neue Benutzer, bis nicht tun können, dass 8 Stunden später. Hier ist, was ich gefunden habe, dass es erklärt hat. http://stackoverflow.com/questions/6514621/npm-install-locally – user1449536

+0

Keine Sorge, ich war wirklich nicht 100% sicher, bis ich diese Dokumentationsseite fand. – Pickels

+0

Ihre Antwort ist fast korrekt, aber dieser Ordner heißt node_module ** s ** – idmean

5

Wenn Sie eine package.json-Datei in dem Ordner haben, in dem Sie das Paket installieren möchten, wird der Ordner node_modules korrekt erstellt.

Grund package.json

{ 
    "name": "application-name", 
    "version": "0.0.1" 
}