From a26573a1579323edc4c87f7d7bd360bb0e2e3cff Mon Sep 17 00:00:00 2001 From: Zack Light Date: Thu, 16 Dec 2021 12:13:57 -0800 Subject: [PATCH] Speed up the zshrc hook reading .nvmrc --- README.md | 33 +++++++++++++-------------------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 94599b7..0c923cc 100644 --- a/README.md +++ b/README.md @@ -604,31 +604,24 @@ This alias would search 'up' from your current directory in order to detect a `. ##### Calling `nvm use` automatically in a directory with a `.nvmrc` file -Put this into your `$HOME/.zshrc` to call `nvm use` automatically whenever you enter a directory that contains an +Put this into your `$HOME/.zshrc` after nvm initialization to call `nvm use` automatically whenever you enter a directory that contains an `.nvmrc` file with a string telling nvm which node to `use`: - + Usage: follow the [simple official guide to create a .nvmrc file](https://github.com/nvm-sh/nvm#nvmrc) containing the node version number in the directory you want to use. ```zsh # place this after nvm initialization! -autoload -U add-zsh-hook -load-nvmrc() { - local node_version="$(nvm version)" - local nvmrc_path="$(nvm_find_nvmrc)" + autoload -U add-zsh-hook + load-nvmrc() { + local nvmrc_path=".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 + if [ -f "$nvmrc_path" ]; then + if [[ "$(which node)" != *"v$(cat "${nvmrc_path}")"* ]]; then + nvm use --silent + fi + elif [[ "$(which node)" != *"v$(cat ~/.nvm/alias/default)"* ]]; then + nvm use default --silent 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 + } + add-zsh-hook chpwd load-nvmrc ``` #### fish