2013-05-10 23 views
11

Ich habe vor kurzem begonnen, mit node.js zu spielen, aber ich verlor in einer großen Unordnung der verschiedenen Versionen von Knoten, npm, nvm und anderen Paketen. Ich weiß nicht, was global installiert ist und was lokal installiert ist (und wenn die Pakete wissen, welche Versionen von Node sie lokal verwenden können?).Wo legt node.js seine Dateien ab?

Ich möchte eine Zusammenfassung der verschiedenen Installationsoptionen haben. In bestimmten:

  • Wo installiert Knoten, wenn ich nvm verwenden, apt-get, make install oder wenn andere Möglichkeiten, mit?
  • Ist es eine gute Idee, Knoten lokal zu installieren?
  • Warum ändert nvm meine ~/.profile anstatt sich selbst in einem System erkennbaren Ordner bin zu installieren?
  • Ich sah, dass nvm kann verschiedene Versionen von Knoten nebeneinander installieren - warum sollte ich das tun? Ich kann sie stattdessen lokal installieren, oder?
  • Wo installiert npm Pakete? Ich sah, dass es Packages eine Version von Node überprüft, was passiert mit diesen Paketen, wenn der Knoten aktualisiert wird?
  • In welchen Fällen ist es besser, globale oder lokale Installation zu verwenden? Wo sollte ich meine Pakete dann (und wo sie standardmäßig setzen?) Setzen
  • Was ist der Unterschied zwischen npm, nvm und nave?

EDIT: Es gibt eine Menge Möglichkeiten, here Knoten zu installieren, das macht mich noch mehr verwirrt ...

Antwort

16

Wo ist der Knoten installiert, wenn ich nvm, apt-get, make install oder auf andere Weise verwende?

apt-get installiert alle die Software nicht nur Knoten, auf dem Dateisystem nach der Ubuntu-Konvention, wo Binärdateien zu speichern, man Dateien, gemeinsam genutzte Dateien, Protokolle, etc. Jedoch mit apt-get Ihnen habe nur die bestimmte Version des Knotens, der durch den Verteilungsfreigabezyklus bestimmt wird. Wenn Updates verfügbar sind, werden sie mit apt-get update; apt-get upgrade installiert. Die neueste Version einer App wird jedoch erst verfügbar sein, wenn sie in die Distribution gelangt. Zum Beispiel ist der Knoten v0.x.y möglicherweise nicht verfügbar, bis Ubuntu 13.10 die einzige Möglichkeit ist, ihn manuell zu installieren. Die gute Seite von apt-get oder anderen System-Paket-Manager ist, dass es Updates und das Entfernen von Paketen für Sie verwaltet. Es speichert alle Daten über das Softwarepaket in seiner eigenen Datenbank. Sie können den Knoten immer mit apt-get remove node löschen und das war's.

make install Installieren Sie das Paket manuell, aber es gilt als schädlich. Verwenden Sie nie die make install hauptsächlich, weil Sie das Paket nicht einfach löschen können, müssen Sie das Makefile lesen und manuell alle Dateien löschen, die von ihm installiert werden. In einer Situation, in der Sie make install verwenden möchten, steht immer checkinstall zur Verfügung. Es ist eine Software, die ein natives Paket erstellt und es mit dem System registriert. Wenn Sie das Paket löschen möchten, können Sie dies mit einem Befehl anstelle von vielen tun. wiki link; Ubuntu guide on checkinstall

Jetzt nvm Skript ist ein node version manager. Es ist sehr hilfreich und einfach zu bedienen. Es ermöglicht Ihnen, mehrere Knotenversionen gleichzeitig auf Ihrem Computer zu installieren und zu verwenden. Es kompiliert den Knoten von Quelle wie make install nicht, so dass es sehr schnell ist. Es hängt nicht von Ihrem Verteilungsfreigabezyklus ab, sodass Sie Zugriff auf alle derzeit verfügbaren Knotenversionen haben. nvm lädt vorkompilierte Binärdateien herunter und eignet sich perfekt für den allgemeinen Gebrauch. Es speichert seine Knotendateien lokal in seinem eigenen Ordner. Wenn Sie also etwas zwischen den verschiedenen Knotenversionen vergleichen möchten, ist dies einfach.

Ist es eine gute Idee, Knoten lokal zu installieren?

Wenn Sie lokal von nvm sprechen, dann ist es sehr gut für Entwicklung und Tests. Sie sind sich nicht sicher über die Auswirkungen auf die Produktionsleistung und den Nutzen zwischen der Installation von der Quelle oder der Verwendung der vorkompilierten Binärdateien nvm. Ich benutze nvm für die Entwicklung und installiere von der Quelle in der Produktion. Aber wenn jemand dieses Problem weiter erklären könnte, würde ich mich freuen, mehr zu erfahren.

Warum ändert nvm meine ~/.profile, anstatt sich in einem vom System erkennbaren Ordner zu installieren?

Da nvm keine ausführbare Datei ist. Es ist eine Reihe von Bash-Funktionen, die von Shell stammen und separat verwendet werden können. Sie können nvm_ls und nvm_ls_remote und andere ohne das Hauptskript aufrufen, nachdem es in Ihre Shell eingegeben wurde. Was das Hauptskript tut, analysiert es die Befehlszeilenargumente und pretty druckt die Ausgabe im Fall von zum Beispiel `nvm_ls_remote '.

in der ~ /.Profil wird folgende Zeile hinzugefügt

[[ -s /home/USERNAME/.nvm/nvm.sh ]] && . /home/USERANME/.nvm/nvm.sh # This loads NVM 

lädt alle Funktionen in der Shell

sah ich, dass NVM verschiedene Versionen von Knoten nebeneinander installiert werden kann - warum sollte ich das tun wollen? Ich kann sie stattdessen lokal installieren, oder?

Sie können sie lokal installieren make install oder checkinstall verwenden, aber Sie werden Aliase für sie wie node_0.8.1 machen müssen, node_0.8.2, node_0.10.1 etc. und Sie werden neue Aliase verwalten müssen, die Installation alle Pakete, entfernen sie für den Fall, dass Sie sie nicht selbst brauchen. Dies sind mühsame und langweilige Aufgaben, die manchmal fehleranfällig sein können. nvm erledigt all diese Aufgaben für Sie kostenlos.

Sie möchten dies tun, um Ihre App unter den verschiedenen Versionen von Knoten zu testen. Zum Beispiel sind Sie gut und getestet unter der v0.8, aber Sie möchten die neuen Funktionen der v0.10.3 verwenden, wie machen Sie das? Sie müssen den Quellcode herunterladen, kompilieren, einen Alias ​​erstellen und Ihre App ausführen. Sie können dies mit nur nvm install 0.10.3 tun und Ihre App ausführen. Manchmal müssen Sie mehr als eine Knotenversion unterstützen. Zum Beispiel halten einige gehostete Umgebungen nicht mit der neuesten Version in Kontakt und haben nur v0.6. Ihre Clients, die Ihre Server-App verwenden, können einen für diese Version spezifischen Fehler entdecken. Wenn Sie den Fehler beheben, müssen Sie ihn zuerst reproduzieren. Mit nvm Installation der v0.6 ist eine Zeile und eine halbe Minute. Und Sie können auf diese Weise alle gewünschten Versionen einfach überprüfen. Testen Sie Ihren Code unter verschiedenen Versionen und stellen Sie sicher, dass Sie gut sind.

Wo installiert npm Pakete? Ich sah, dass es Packages eine Version von Node überprüft, was passiert mit diesen Paketen, wenn der Knoten aktualisiert wird?

Wenn Sie mit nvm die Pakete, die global mit -g Option installiert sind, werden an den entsprechenden Knoten Version gebunden. Wenn Sie zwischen Versionen mit nvm use 0.x wechseln, müssen Sie entweder die Pakete erneut installieren oder nvm copy-packages <version> verwenden, um die Pakete von der aktuellen Version zu verwenden. Wenn die Pakete lokal installiert sind, kommt es darauf an. package.json sollte Informationen über die Abhängigkeiten der App enthalten. Wenn es Knoten: '0.8' heißt und Sie gerade auf 0.9 aktualisiert haben, könnten Probleme auftreten. Zum Beispiel wurde das Verhalten von process.nextTick in den neuesten Versionen im Vergleich zu 0,6 geändert. Also sei vorsichtig.

In welchen Fällen ist es besser, globale oder lokale Installation zu verwenden? Wo sollte ich meine Pakete dann (und wo sie standardmäßig setzen?) Setzen

Es kommt darauf an. Für die Entwicklung nvm ist meiner Meinung nach überlegen. Für mich ist es bequem und einfach. Für die Produktion gibt es möglicherweise einige Auswirkungen auf die Leistung, wenn Sie die vorkompilierten Binärdateien verwenden, die nicht für Ihr System optimiert sind. Es wäre besser, dies als eine separate Frage zu stellen, damit die Leute mit der relevanten Erfahrung antworten können.

Was ist der Unterschied zwischen npm, nvm und nave?

npm ist ein node package manager ->link Es Userland-Pakete von anderen Menschen entwickelt enthält. Diese Pakete sind nicht Teil des Knotenkerns.npm wird für die Veröffentlichung Ihres Code- und Abhängigkeitsmanagements verwendet. Wenn Ihre App eine andere App benötigt, die von anderen Personen entwickelt wurde, ist es praktisch, sie über npm zu veröffentlichen.

nvm ist ein node version manager es macht eine völlig separate Sache. Es gibt Ihnen die Möglichkeit, sehr einfach zwischen Knotenversionen auf demselben Rechner zu wechseln und alle Änderungen in Ihrer Umgebungsvariablen $PATH zu verwalten.

Betrachten Sie nvm als Update-Manager für das Betriebssystem und npm als Manager der Anwendungen für dieses System. Nun, dieser Vergleich ist nicht präzise, ​​aber kam gerade auf meinem Kopf

nave ist grundsätzlich die gleiche wie nvm aber es ist eine ausführbare Datei während nvm ist ein Skript, das in die Schale stammt. Jedes System hat seine eigenen Vorteile. Sie könnten eine separate Frage bezüglich der Anwendungsfälle und Unterschiede stellen.

Meine Antwort ist nicht zu 100% vollständig und enthält viele subjektive persönliche Meinungen. Ich hoffe jedoch, dass ich zumindest einige Punkte klarer machen werde, damit Sie mit spezifischeren Fragen fortfahren können. Übrigens könnte diese Fragenliste als separate Fragen gestellt werden. Ich glaube, stackoverflow bietet beste Ergebnisse, wenn spezifische Fragen separat gestellt werden und mehr Menschen mit relevanter Erfahrung beitragen können.

+0

Das ist eine großartige Antwort, danke! Ich habe so viele Fragen gestellt, weil ich nur verwirrt war; Wenn ich eine bestimmte Frage habe, frage ich sie getrennt. – mik01aj

+0

Sehr hilfreiche Antwort! Wirklich gute Sicht auf alle Optionen, die OP aufbrachte. – Qcom

3

Wenn Sie

npm install 

in Fölser mit package.json laufen, es installiere alle Pakete lokal (im aktuellen Ordner).

Auch, npm Standardinstallation packeges lokal. Für installieren globaly - verwenden Option -g:

npm install -g <package> 

nächsten Befehl ausführen:

npm config list 

sehen Sie alle npm Config Beschreibung

+0

aber was genau bedeutet "global" hier? Das gleiche über "lokal" - ich denke, es verwendet 'node_modules'-Ordner, aber ich bin mir nicht sicher, wie es diesen Ordner fint. – mik01aj

+0

Erweitern Sie die Antwort, versuchen Sie es – Eugene

+3

lokal in diesem Kontext bedeutet, dass Pakete im Ordner 'node_modules' im selben Ordner installiert sind, in dem Sie' npm install 'ausführen. Global bedeutet, dass es auf Systemebene installiert und überall verfügbar ist. –

1

Sie Module im lokalen Kontext Ihrer Anwendung installieren können mit

npm install modulename

In diesem Fall wird die Das Modul wird in Ihrem node_modules-Ordner Ihrer Anwendung installiert.

Ansonsten können Sie ein Modul im globalen Kontext mit

npm install -g modulename

In diesem Fall installieren Sie das Modul unter/usr/local/bin/Modulname in der Regel für das Loch Systemumgebung installiert werden.

Die globale Installation ist sinnvoll für Module, die Sie in mehr als einer Anwendung benötigen, wie Express oder Node-Inspector.

Verwandte Themen