Speed up the zshrc hook reading .nvmrc

This commit is contained in:
Zack Light 2021-12-16 12:13:57 -08:00 committed by Zack Light
parent 6cc90a4b8d
commit a26573a157

View File

@ -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 ##### 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`: `.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 ```zsh
# place this after nvm initialization! # place this after nvm initialization!
autoload -U add-zsh-hook autoload -U add-zsh-hook
load-nvmrc() { load-nvmrc() {
local node_version="$(nvm version)" local nvmrc_path=".nvmrc"
local nvmrc_path="$(nvm_find_nvmrc)"
if [ -n "$nvmrc_path" ]; then if [ -f "$nvmrc_path" ]; then
local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")") if [[ "$(which node)" != *"v$(cat "${nvmrc_path}")"* ]]; then
nvm use --silent
if [ "$nvmrc_node_version" = "N/A" ]; then fi
nvm install elif [[ "$(which node)" != *"v$(cat ~/.nvm/alias/default)"* ]]; then
elif [ "$nvmrc_node_version" != "$node_version" ]; then nvm use default --silent
nvm use
fi fi
elif [ "$node_version" != "$(nvm version default)" ]; then }
echo "Reverting to nvm default version" add-zsh-hook chpwd load-nvmrc
nvm use default
fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrc
``` ```
#### fish #### fish