From 2ede8c65a6435e7898bb9dea92a0b15fd60518fa Mon Sep 17 00:00:00 2001 From: Josh Sherman Date: Wed, 28 Dec 2022 15:09:43 -0600 Subject: [PATCH] Add automatic node.js switching --- zsh/.zshrc | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/zsh/.zshrc b/zsh/.zshrc index 89d39b7..31e1074 100644 --- a/zsh/.zshrc +++ b/zsh/.zshrc @@ -106,3 +106,27 @@ elif command -v pacman &> /dev/null; then && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" fi + +# Automatically use Node.js version specified in .nvmrc +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