Ich möchte die Distribution Node.js-Pakete (oder das chris-lea ppa für neuere Versionen) verwenden, aber NPM in meinem Home-Verzeichnis installieren.
Dies mag wählerisch erscheinen, aber es ist eine ziemlich idiomatische Möglichkeit für Entwickler, die Polyglot / Github verwenden, Sprachlaufzeit- / Bibliotheksumgebungen unter Linux einzurichten: Distributionspakete für die Laufzeit, Bibliotheken von Drittanbietern in einer Umgebung pro Benutzer (siehe virtualenv, RVM - RVM wird auch Ruby für Sie erstellen, wenn Sie wollen). Bei Bedarf werde ich den Knoten lokal erstellen, aber es ist eine PITA, da der Knoten für viele Projekte zu einer zufälligen Entwicklungsanforderung wird.
Antworten:
NPM installiert bereits lokale Pakete in Ihren Projekten, aber ich halte das System trotzdem gerne von den Dateien meines Betriebssystems fern. So schlage ich vor, Nodejs-Pakete zu unterteilen:
Installieren Sie Nodejs und NPM über das Chris-Lea-PPA. Dann habe ich in meinem Homedir einen Paketstamm eingerichtet, der die "globalen" Node-Pakete enthält:
Stellen Sie NPM so ein, dass dieses Verzeichnis für die Installation globaler Pakete verwendet wird:
Konfigurieren Sie PATH und MANPATH so, dass Befehle in Ihrem Präfix $ NPM_PACKAGES angezeigt werden, indem Sie Ihrer .zshrc / .bashrc Folgendes hinzufügen:
Wenn Sie dies tun
npm install -g
, installiert NPM die Bibliotheken in~/.npm-packages/lib/node_modules
und verknüpft ausführbare Tools mit~/.npm-packages/bin
Ihren BibliothekenPATH
.Verwenden
npm install -g
Sie einfach wie gewohnt:quelle
node
installiertnpm
ist, das jedoch nicht installiert ist, befolgen Sie die Anweisungen in der obigen Antwortnpm_config_prefix=$NPM_PACKAGES curl -L https://npmjs.org/install.sh | sh
, um sichnpm
selbst in Ihrem Home-Verzeichnis zu installieren.npm config set prefix $NPM_PACKAGES
$HOME/.local
stattdessen für das Präfix. Es ist ein häufig verwendeter Ordner, der heutzutage von anderer Software zum Speichern lokaler Dateien verwendet wird.echo 'prefix = ${NPM_PACKAGES}' >> ~/.npmrc
, ist der Pfad nicht fest codiert.npmrc
, aber npm liest ihn bei jeder Ausführung von npm aus der Umgebungsvariablen (Hinweis, den ich geändert habe"
,'
um zu verhindern, dass die Shell, die das Echo ausführt, die Variable erweitert und{}
um die Variable herum hinzugefügt hat , da dies die Syntax ist, die in verwendet wird.npmrc
. Damit dies funktioniert, musste ich Folgendes ändern.bashrc
, umexport NPM_PACKAGES="$HOME/.npm-packages"
Folgendes zu lesen : . Hinzufügen derexport
macht es für npm verfügbar. Unabhängig davon, denke ich, müssten Sie auchexport
die anderen Variablen hinzufügen .Jakes Antwort wurde 2012 veröffentlicht und verweist auf Chris Leas Node.js PPAs, die seit März 2015 nicht mehr aktualisiert wurden.
Hier sind die Schritte, mit denen ich Node.js und npm in meinem Home-Verzeichnis installiere:
Installieren Sie Node.js mit nvm (nicht
sudo
erforderlich):Jetzt kannst du
install -g
ohnesudo
und alles geht rein~/.nvm/
Oder installieren Sie Node.js ohne nvm ( offizielle Anweisungen) ):
Installieren Sie Node.js.
Node.js v6 (aktuelles LTS ab Mai 2017):
Node.js v7:
Ändern Sie das Standardverzeichnis von npm in ein lokales:
Alternativ ersetzen
.npm-global
durch das Verzeichnis Ihrer Wahl .Aktualisieren Sie npm und überprüfen Sie, ob es in Ihrem
$HOME
Verzeichnis installiert ist :Jetzt können Sie
install -g
ohnesudo
und ohne Probleme mit Ihren Systemdateien.quelle
Die von Just Jake veröffentlichte Lösung ist großartig. Aufgrund eines Fehlers mit npm> 1.4.10 funktioniert es jedoch möglicherweise nicht wie erwartet. (Siehe dies und das )
Während der Fehler behoben ist, können Sie ein Downgrade auf npm 1.4.10 durchführen, indem Sie die folgenden Schritte ausführen:
sudo npm install -g [email protected]
npm --version
)quelle
Da Python hat schon einen guten Job
virtualenv
, ich benutzenodeenv
. Im Vergleich dazunvm
können Sie mehrere Umgebungen für dieselbe Knotenversion erstellen (z. B. zwei Umgebungen für Knoten,0.10
jedoch mit unterschiedlichen Paketsätzen).Die Readme-Datei ist ziemlich gut: https://github.com/ekalinin/nodeenv
quelle
Ich habe einige Zeit die @ just-jake- Lösung verwendet und festgestellt, dass nvm einfacher einzurichten ist. Es ist auch eine sehr leistungsstarke Lösung, mit der verschiedene Versionen von installiert und verwendet werden können
nodejs
.Unter Ubuntu 14.04 oder 16.04:
Installieren Sie die erforderlichen Pakete für die Erstellung
nodejs
:Installiere nvm :
Falls eine neuere Version von nvm verfügbar sein wird, finden Sie den aktuellen Installationsbefehl auf nvm Site.
nvm
Das Installationsprogramm fügt ein Bootstrap-Skript hinzu~/.bashrc
, sodass Sie entweder das Terminal erneut öffnen müssen, um es auszuführen, oder Folgendes tun müssen:Jetzt können Sie alle installieren
nodejs
Version , zwischen ihnen wechseln usw.Verwenden
nvm ls-remote
diese Option, um verfügbarenodejs
Versionen aufzulisten.So installieren Sie beispielsweise
nodejs
v4.2.4:quelle
Um die Antwort von Just Jake und user1533401 zu erweitern: Ich kann kein Downgrade durchführen, da ich Shared Hosting verwende und der Knoten in einem Systemverzeichnis installiert ist. Aus diesem Grund habe ich auch das Verzeichnis geändert, in dem npm globale Skripte installiert, wenn ich dies möchte. Für diejenigen im selben Boot ist hier eine weitere vorübergehende Lösung, die ich gefunden habe:
npm install -g --prefix=$(npm config get prefix) <package>
Der Fehler ist, dass npm Ihre Konfigurationsdatei pro Benutzer nicht liest, sondern jedes Mal, wenn Sie ein globales Skript installieren, dies behebt. Gefunden hier .
quelle
Wie schon hier und hier angegeben
quelle
Andere Antworten haben veraltete Lösungen: Die Lösung von 2020 verwendet
NPM_CONFIG_PREFIX
Umgebungsvariablen. (Siehe Details )Beispielsweise,
quelle