Automatisch die richtige Node Version nutzen mit zsh und nvm
Ich nutze gerne nvm um die Node Version auf meinem Rechner zu verwalten und daher ist es nur logisch auch eine .nvmrc
Datei in Projekten zu haben, mit der ich die jeweils passende Node Version festlege.
In diesem Projekt ist es etwa die aktuelle LTS Version von node:
lts/*
Jetzt könnte ich, wenn ich ins Projekt wechsle einfach nvm use
ausführen, um die Version zu laden, ehrlicherweise vergesse ich das aber auch gerne mal. Glücklicherweise lässt sich das mit einer Anpassung in meiner ~/.zshrc
(ich nutze Zsh und Oh My Zsh) schnell korrigieren. Hinter der Initialisierung von nvm müsst ihr einfach den folgenden Code einfügen:
# place this after nvm initialization!
autoload -U add-zsh-hook
load-nvmrc() {
local node_version="$(nvm version)"
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" != "$node_version" ]; then
nvm use
fi
elif [ "$node_version" != "$(nvm version default)" ]; then
echo "Reverting to nvm default version"
nvm use default
fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrc
Das steht auch in der offiziellen Doku zu nvm, aber wer liest schon Anleitungen 😅