Konfiguration von nvmrc
Einführung
Bei der Entwicklung mehrerer Projekte kann jedes Projekt eine andere Node.js-Version erfordern. In solchen Fällen müssen wir die Node.js-Version für jedes Projekt festlegen, indem wir die Befehle nvm install
und nvm use
im Terminal ausführen, um Versionen zu installieren und zu wechseln.
Das manuelle Ausführen von Befehlen im Terminal wird jedoch mit der Zeit mühsam, besonders wenn die Anzahl der Projekte zunimmt. Es ist leicht, den Versionswechsel zu vergessen oder zur falschen Version zu wechseln, was dazu führen kann, dass Projekte nicht starten oder während der Laufzeit Fehler auftreten.
Hier benötigen wir eine Methode zur Verwaltung von Node.js-Versionen und zum automatischen Wechseln zwischen ihnen, und hier kommt .nvmrc
ins Spiel.
Was ist .nvmrc?
Aus der obigen Erklärung können Sie verstehen, dass die .nvmrc
-Datei verwendet wird, um die Node.js-Version für unser Projekt zu verwalten. Diese Datei ist sehr einfach: Sie enthält nur Text, der eine Node.js-Version darstellt, die nvm erkennen kann, wie z.B. v18.12.0
.
Wie verwendet man die .nvmrc-Datei?
Sie können eine .nvmrc
-Datei mit Inhalt erstellen, der eine Node.js-Versionsnummer oder ein anderer Text ist, den nvm verstehen kann. Für Details können Sie nvm --help
im Terminal eingeben.
Mit der .nvmrc
-Datei wird bei der Ausführung von Befehlen wie nvm use
, nvm install
, nvm exec
, nvm run
und nvm which
im Terminal ohne Angabe einer Version die in der .nvmrc
-Datei angegebene Version verwendet.
Erstellen einer .nvmrc-Datei
Zum Beispiel können Sie im aktuellen Verzeichnis mit dem Befehl echo
eine .nvmrc
-Datei erstellen, damit nvm die neueste Version von Version 18.12, die neueste LTS-Version oder die neueste Node.js-Version angibt:
$ echo "18.12" > .nvmrc
# Die neueste LTS-Version einstellen
$ echo "lts/*" > .nvmrc
# Die neueste Version einstellen
$ echo "node" > .nvmrc
Befehle wie nvm use
durchsuchen die Verzeichnisstruktur vom aktuellen Verzeichnis aus nach oben auf der Suche nach der .nvmrc
-Datei. Das bedeutet, dass die Ausführung von Befehlen wie nvm use
in einem beliebigen Unterverzeichnis eines Verzeichnisses mit einer .nvmrc
-Datei immer noch diese .nvmrc
-Datei verwendet.
Die .nvmrc
-Datei muss eine <Version>
enthalten, die dem entspricht, was in nvm --help
aufgeführt ist, gefolgt von einem Zeilenumbruch. Nachfolgende Leerzeichen sind nicht erlaubt, und ein nachfolgender Zeilenumbruch ist erforderlich.
Wie im Bild unten zu sehen ist, gibt es nach v14.21.3 kein Leerzeichen, nur einen Zeilenumbruch.
Tiefe Integration mit Shell-Terminals
Sie können avn
verwenden, um es tief in Ihre Shell zu integrieren und nvm beim Wechsel von Verzeichnissen automatisch aufzurufen.
Wenn Sie eine leichtgewichtige Lösung bevorzugen, können Sie die folgende Methode verwenden.
Automatisches Umschalten der Node.js-Versionen im zsh-Terminal basierend auf der .nvmrc-Datei
Nachdem Sie den folgenden Code zu Ihrer $HOME/.zshrc
hinzugefügt haben, wird nvm use
automatisch aufgerufen, wenn Sie ein Verzeichnis mit einer .nvmrc
-Datei betreten. Die Zeichenfolge in der .nvmrc
-Datei teilt nvm mit, welche Version von Node.js verwendet werden soll.
# Home-Verzeichnis öffnen und .zshrc-Datei bearbeiten
$ cd
$ vi .zshrc
Dies ist der Code, der in .zshrc
geschrieben werden muss:
# Kopieren Sie dieses Codesegment in die .zshrc-Datei
# platzieren Sie dies nach der nvm-Initialisierung!
autoload -U add-zsh-hook
load-nvmrc() {
local nvmrc_path="$(nvm_find_nvmrc)"
if [ -n "$nvmrc_path" ]; then
local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")
if [ "$nvmrc_node_version" = "N/A" ]; then
nvm install
elif [ "$nvmrc_node_version" != "$(nvm version)" ]; then
nvm use
fi
elif [ -n "$(PWD=$OLDPWD nvm_find_nvmrc)" ] && [ "$(nvm version)" != "$(nvm version default)" ]; then
echo "Reverting to nvm default version"
nvm use default
fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrc
Nach dem Bearbeiten der .zshrc
-Datei führen Sie source .zshrc
aus, damit der Befehl wirksam wird:
$ source ~/.zshrc
In Projekten mit einer .nvmrc
-Datei werden Sie feststellen, dass nvm use
automatisch ausgeführt wird, wenn Sie das integrierte Terminal in vscode
öffnen, mit entsprechender Ausgabe in der Befehlszeile.