n
– Verwalten Sie Ihre Node.js-Versionen interaktivNode.js-Versionsverwaltung: keine Subshells, keine Profileinrichtung, keine komplizierte API, einfach nur einfach .
n
– Verwalten Sie Ihre Node.js-Versionen interaktiv n
wird auf macOS, Linux, einschließlich des Windows-Subsystems für Linux, und verschiedenen anderen Unix-ähnlichen Systemen unterstützt. Es ist als BASH-Skript geschrieben, erfordert jedoch nicht die Verwendung von BASH als Befehlsshell.
n
funktioniert nicht in nativen Shells unter Microsoft Windows (wie PowerShell), Git für Windows BASH oder mit der Cygwin-DLL.
Wenn Sie Node.js bereits installiert haben, können Sie n
einfach mit npm
installieren:
npm install -g n
Der beim Ausführen von n
verwendete Standard-Root-Speicherort ist /usr/local
, wo ein normaler Benutzer keine Schreibberechtigung hat. Wenn Sie npm zum Installieren globaler Module verwenden, kann es zu demselben Berechtigungsfehler kommen, wie beim obigen Befehl. Sie haben drei Hauptoptionen:
n
an, einen benutzerdefinierten Speicherort zu verwenden, an dem Sie über Schreibberechtigungen verfügen (siehe N_PREFIX
).sudo
vor den Befehl, um ihn als Superuser auszuführen n
speichert Node.js-Versionen im Unterverzeichnis n/versions
zwischen. Die aktive Node.js-Version wird in den Unterverzeichnissen bin
, include
, lib
und share
installiert.
So übernehmen Sie den Besitz der Systemverzeichnisse (Option 1):
# make cache folder (if missing) and take ownership
sudo mkdir -p /usr/local/n
sudo chown -R $(whoami) /usr/local/n
# make sure the required folders exist (safe to execute even if they already exist)
sudo mkdir -p /usr/local/bin /usr/local/lib /usr/local/include /usr/local/share
# take ownership of Node.js install destination folders
sudo chown -R $(whoami) /usr/local/bin /usr/local/lib /usr/local/include /usr/local/share
Wenn npm
noch nicht verfügbar ist, besteht eine Möglichkeit zum Starten einer Installation darin, n
direkt herunterzuladen und auszuführen. So installieren Sie die lts
Version von Node.js:
curl -fsSL https://raw.githubusercontent.com/tj/n/master/bin/n | bash -s install lts
# If you want n installed, you can use npm now.
npm install -g n
Wenn Sie keine Unterstützung für Updates für n
selbst benötigen, können Sie den Download einfach speichern:
curl -fsSL -o /usr/local/bin/n https://raw.githubusercontent.com/tj/n/master/bin/n
chmod 0755 /usr/local/bin/n
n install lts
Auf macOS mit Homebrew können Sie die n-Formel installieren.
brew install n
Oder unter macOS mit MacPorts können Sie den n-Port installieren:
port install n
Unter Linux und macOS ermöglicht n-install die Installation direkt von GitHub; zum Beispiel:
curl -L https://bit.ly/n-install | bash
n-install setzt sowohl PREFIX
als auch N_PREFIX
auf $HOME/n
, installiert n
auf $HOME/n/bin
, ändert die Initialisierungsdateien der unterstützten Shells, um N_PREFIX
zu exportieren und $HOME/n/bin
zum PATH
hinzuzufügen, und installiert die neueste Version LTS Node.js-Version.
Dadurch werden sowohl n
selbst als auch alle von ihm verwalteten Node.js-Versionen in einem einzigen, optional konfigurierbaren Verzeichnis gehostet, das Sie später mit dem mitgelieferten n-uninstall
Skript entfernen können. n-update
aktualisiert n
selbst auf die neueste Version. Weitere Informationen finden Sie im n-install-Repository.
Der Wechsel von einem zuvor installierten Node.js an einen anderen Speicherort kann einige zusätzliche Schritte erfordern. In den Dokumenten zum Ändern des Knotenstandorts finden Sie ein exemplarisches Beispiel für den Wechsel von der Verwendung von Homebrew zur Verwendung n
zum Verwalten von Node.js.
Sie haben ein Problem mit mehreren Versionen, wenn Sie nach der Installation des Knotens feststellen, dass der „installierte“ und der „aktive“ Speicherort unterschiedlich sind:
% n lts
copying : node/20.12.2
installed : v20.12.2 to /usr/local/bin/node
active : v21.7.3 at /opt/homebrew/bin/node
Führen Sie einfach n <version>
aus, um eine Version von Node.js herunterzuladen und zu installieren. Wenn <version>
bereits heruntergeladen wurde, wird n
aus seinem Cache installiert.
n 10.16.0
n lts
Führen Sie n
alleine aus, um Ihre heruntergeladenen Versionen anzuzeigen und die ausgewählte Version zu installieren.
$ n
node/4.9.1
ο node/8.11.3
node/10.15.0
Use up/down arrow keys to select a version, return key to install, d to delete, q to quit
(Anstatt die Pfeiltasten oder Strg+N und Strg+P zu verwenden, können Sie auch j und k verwenden, um die nächste oder vorherige Version auszuwählen.)
Wenn sich die aktive Knotenversion nach der Installation nicht ändert, versuchen Sie, eine neue Shell zu öffnen, falls Sie eine veraltete Version sehen.
Es gibt verschiedene Möglichkeiten, die Zielversion von Node.js für n
Befehle anzugeben. Die meisten Befehle verwenden die neueste passende Version und n ls-remote
listet mehrere passende Versionen auf.
Numerische Versionsnummern können vollständig oder unvollständig sein, mit einem optionalen führenden v
.
4.9.1
8
: 8.xy-Versionenv6.1
: 6.1.x-VersionenEs gibt Labels für zwei besonders nützliche Versionen:
lts
: neueste offizielle Version des Langzeit-Supportslatest
, current
: neueste offizielle Veröffentlichung Es gibt eine auto
Bezeichnung zum Lesen der Zielversion aus einer Datei im aktuellen Verzeichnis oder einem beliebigen übergeordneten Verzeichnis. n
sucht in der Reihenfolge nach:
.n-node-version
: Version in einer Zeile. Benutzerdefiniert zu n
..node-version
: Version in einer Zeile. Wird von mehreren Tools verwendet: Node-Version-Nutzung.nvmrc
: Version in einer Zeile. Wird von nvm
verwendet.engine
. Das engine
Label sucht nach einer package.json
Datei und liest das engines
Feld, um kompatible Node.js zu ermitteln. Erfordert eine installierte Version von jq
oder node
und verwendet npx semver
um komplexe Bereiche aufzulösen.
Es gibt Unterstützung für die genannten Release-Streams:
argon
, boron
, carbon
: Codenamen für LTS-Release-StreamsDiese Node.js-Unterstützungsaliase können verwendet werden, führen Sie jedoch einfach eine Auflösung in die neueste passende Version durch:
active
, lts_active
, lts_latest
, lts
, current
, supported
Das letzte Versionsformular dient zur Angabe anderer verfügbarer Releases unter Verwendung des Namens des Remote-Download-Ordners, optional gefolgt von der vollständigen oder unvollständigen Version.
nightly
test/v11.0.0-test20180528
rc/10
Entfernen Sie einige zwischengespeicherte Versionen:
n rm 0.9.4 v0.10.0
Entfernen aller zwischengespeicherten Versionen außer der installierten Version:
n prune
Entfernen Sie die installierten Node.js (hat keinen Einfluss auf die zwischengespeicherten Versionen). Dies kann nützlich sein, um zur Systemversion von Node zurückzukehren (wenn es sich an einem anderen Standort befindet) oder wenn Sie Node und NPM nicht mehr verwenden möchten oder zu einer anderen Art der Verwaltung wechseln möchten.
n uninstall
Es gibt drei Befehle, mit denen Sie ohne Neuinstallation direkt mit Ihren heruntergeladenen Versionen von Node.js arbeiten können.
Sie können den Pfad zur heruntergeladenen node
anzeigen:
$ n which 6.14.3
/usr/local/n/versions/6.14.3/bin/node
Oder führen Sie eine heruntergeladene node
mit dem Befehl n run
aus:
n run 8.11.3 --debug some.js
Oder führen Sie einen Befehl mit geändertem PATH
aus, sodass node
und npm
aus der heruntergeladenen Node.js-Version stammen. (Hinweis: Wenn npm
auf diese Weise ausgeführt wird, werden globale node_modules aus dem Versionsordner des Zielknotens verwendet.)
n exec 10 my-script --fast test
n exec lts zsh
Eine Node.js-Installation umfasst normalerweise auch npm
, npx
und corepack
, aber Sie möchten möglicherweise Ihre aktuellen (insbesondere neueren) Versionen mit --preserve
beibehalten:
$ npm install -g npm@latest
...
$ npm --version
6.13.7
# Node.js 8.17.0 includes (older) npm 6.13.4
$ n -p 8
installed : v8.17.0
$ npm --version
6.13.7
Sie können dies zum Standard machen, indem Sie die Umgebungsvariable auf eine nicht leere Zeichenfolge setzen. Es gibt separate Umgebungsvariablen für npm
und corepack
:
export N_PRESERVE_NPM=1
export N_PRESERVE_COREPACK=1
Sie können explizit festlegen, dass unabhängig von den Umgebungsvariablen das gewünschte Verhalten erzielt wird:
n --preserve nightly
n --no-preserve latest
Hilfe zur Befehlszeile erhalten Sie über n --help
.
Liste der passenden Remote-Versionen, die zum Download verfügbar sind:
n ls-remote lts
n ls-remote latest
n lsr 10
n --all lsr
Heruntergeladene Versionen im Cache auflisten:
n ls
Version in den Cache herunterladen:
n download 22
Verwenden Sie n
, um auf zwischengespeicherte Versionen (bereits heruntergeladen) zuzugreifen, ohne dass eine Internetverbindung verfügbar ist.
n --offline 12
Entfernen Sie die Cache-Version nach der Installation mit --cleanup
. Dies ist besonders nützlich für eine einmalige Installation, beispielsweise in einem Docker-Container.
curl -fsSL https://raw.githubusercontent.com/tj/n/master/bin/n | bash -s install --cleanup lts
Normalerweise n run
, n exec
und n which
fehlschlägt, wenn sich die Zielversion nicht bereits im Cache befindet. Sie können --download
hinzufügen, um den Cache zu verwenden, falls verfügbar, oder bei Bedarf herunterladen:
n --download run 18.3 my-script.js
Zeigen Sie Diagnosen an, um Probleme zu beheben:
n doctor
Wenn Sie einen anderen Node.js-Spiegel verwenden möchten, der das gleiche Layout wie der Standard-https://nodejs.org/dist/ hat, können Sie N_NODE_MIRROR
definieren.
Ein Beispiel ist für Benutzer in China, die Folgendes definieren können:
export N_NODE_MIRROR=https://npmmirror.com/mirrors/node
Ein weiteres Beispiel ist das inoffizielle Builds-Projekt Node.js, das Downloads für einige Plattformen bereitstellt, die nicht offiziell verfügbar sind, wie etwa armv6l (Raspberry Pi) und 32-Bit x86.
export N_NODE_MIRROR=https://unofficial-builds.nodejs.org/download/release
Möglicherweise müssen Sie die Architektur explizit angeben, wenn sie nicht automatisch von n
erkannt wird, z. B. bei Verwendung von musl
libc
auf Alpine:
export N_NODE_MIRROR=https://unofficial-builds.nodejs.org/download/release
apk add bash curl libstdc++
n --arch x64-musl install lts
Wenn der benutzerdefinierte Spiegel eine Authentifizierung erfordert, können Sie den URL-codierten Benutzernamen und das Passwort zur URL hinzufügen. z.B
export N_NODE_MIRROR=https://encoded-username:encoded-password@host:port/path
Es gibt auch N_NODE_DOWNLOAD_MIRROR
für einen anderen Spiegel mit demselben Layout wie der Standard-Spiegel https://nodejs.org/download.
Standardmäßig wählt n
die Binärdateien aus, die zu Ihrer Systemarchitektur passen. Auf einem 64-Bit-System lädt n
beispielsweise 64-Bit-Binärdateien herunter.
Auf einem Mac mit Apple-Silizium:
n
standardmäßig arm64-Binärdateien, die nativ ausgeführt werdenn
standardmäßig x64-Binärdateien, die in Rosetta 2 ausgeführt werden Sie können die Standardarchitektur überschreiben, indem Sie die Option -a
oder --arch
verwenden.
Installieren Sie beispielsweise die neueste Version von Node.js mit x64-Binärdateien neu:
n rm current
n --arch x64 current
Der Befehl n
lädt standardmäßig nach /usr/local
herunter und installiert ihn. Sie können diesen Speicherort jedoch überschreiben, indem Sie N_PREFIX
definieren. Um den Speicherort auf $HOME/.n
zu ändern, fügen Sie Ihrer Shell-Initialisierungsdatei Zeilen wie die folgenden hinzu:
export N_PREFIX=$HOME/.n
export PATH=$N_PREFIX/bin:$PATH
Wenn Sie die Downloads an einem anderen Ort speichern möchten, verwenden Sie N_CACHE_PREFIX
. Dies hat keinen Einfluss darauf, wo die aktive Knotenversion installiert ist.
n
verwendet standardmäßig xz-komprimierte Node.js-Tarballs für den Download, wenn es wahrscheinlich ist, dass tar auf dem System die xz-Dekomprimierung unterstützt. Sie können die automatische Auswahl außer Kraft setzen, indem Sie eine Umgebungsvariable auf Null oder ungleich Null setzen:
export N_USE_XZ=0 # to disable
export N_USE_XZ=1 # to enable
Sie können explizit festlegen, dass unabhängig von der Umgebungsvariablen das gewünschte Verhalten erzielt wird:
n install --use-xz nightly
n install --no-use-xz latest
Kurz:
N_NODE_MIRROR
: Siehe Benutzerdefinierte QuelleN_NODE_DOWNLOAD_MIRROR
: Siehe Benutzerdefinierte QuelleN_MAX_REMOTE_MATCHES
um das standardmäßige ls-remote
Maximum von 20 übereinstimmenden Versionen zu ändernN_PRESERVE_NPM
: Siehe NPM beibehaltenN_PRESERVE_COREPACK
: Siehe npm beibehalten n
lädt ein vorgefertigtes Node.js-Paket herunter und installiert es unter einem einzelnen Präfix (z. B. /usr/local
). Dadurch wird die vorherige Version überschrieben. Der bin
-Ordner an diesem Ort sollte sich in Ihrem PATH
befinden (z. B. /usr/local/bin
).
Die Downloads werden in einem Cache-Ordner gespeichert und können für Neuinstallationen verwendet werden. Die Downloads sind auch zur eingeschränkten Nutzung mit n which
und n run
und n exec
verfügbar.
Die globalen npm
Pakete werden durch die Installation nicht geändert, mit Ausnahme von npm
selbst, das Teil der Node.js-Installation ist.