From d85ad95bc9e15a6708d6fefed3a2673d2431b759 Mon Sep 17 00:00:00 2001 From: Marley Rae Date: Tue, 23 Jan 2024 20:58:32 -0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Automatically=20use=20`.nvmrc`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add function to automatically install if applicable, and use the version of Node.js specified by the .nvmrc, when entering directories with one available. --- node/nvm.zsh | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/node/nvm.zsh b/node/nvm.zsh index 6f666d2..cc187b4 100644 --- a/node/nvm.zsh +++ b/node/nvm.zsh @@ -2,3 +2,31 @@ export NVM_COMPLETION=true source ~/.zsh-plugins/zsh-nvm/zsh-nvm.plugin.zsh + +# Call nvm use automatically whenever a directory containing .nvmrc is entered. +autoload -U add-zsh-hook + +function load-nvmrc() +{ + local nvmrc_path + nvmrc_path="$(nvm_find_nvmrc)" + + if [[ -n "$nvmrc_path" ]]; then + local nvmrc_node_version + 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