summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/nvm/README.md6
-rw-r--r--plugins/nvm/nvm.plugin.zsh38
2 files changed, 19 insertions, 25 deletions
diff --git a/plugins/nvm/README.md b/plugins/nvm/README.md
index a8bc34ae7..1acf12050 100644
--- a/plugins/nvm/README.md
+++ b/plugins/nvm/README.md
@@ -22,9 +22,9 @@ These settings should go in your zshrc file, before Oh My Zsh is sourced:
nvm has been installed, regardless of chip architecture, use `NVM_HOMEBREW=$(brew --prefix nvm)`.
- **`NVM_LAZY`**: if you want the plugin to defer the load of nvm to speed-up the start of your zsh session,
- set `NVM_LAZY` to `1`. This will use the `--no-use` parameter when loading nvm, and will create a function
- for `node`, `npm`, `yarn`, and the command(s) specified by `NVM_LAZY_CMD`, so when you call either of them,
- nvm will load with `nvm use default`.
+ set `NVM_LAZY` to `1`. This will source nvm script only when using it, and will create a function for `node`,
+ `npm`, `pnpm`, `yarn`, and the command(s) specified by `NVM_LAZY_CMD`, so when you call either of them,
+ nvm will be loaded and run with default version.
- **`NVM_LAZY_CMD`**: if you want additional command(s) to trigger lazy loading of nvm, set `NVM_LAZY_CMD` to
the command or an array of the commands.
diff --git a/plugins/nvm/nvm.plugin.zsh b/plugins/nvm/nvm.plugin.zsh
index 630854a71..1fb4d238b 100644
--- a/plugins/nvm/nvm.plugin.zsh
+++ b/plugins/nvm/nvm.plugin.zsh
@@ -4,39 +4,33 @@ if [[ -z "$NVM_DIR" ]]; then
export NVM_DIR="$HOME/.nvm"
elif [[ -d "${XDG_CONFIG_HOME:-$HOME/.config}/nvm" ]]; then
export NVM_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/nvm"
+ elif (( $+commands[brew] )); then
+ NVM_HOMEBREW="${NVM_HOMEBREW:-${HOMEBREW_PREFIX:-$(brew --prefix)}/opt/nvm}"
+ if [[ -d "$NVM_HOMEBREW" ]]; then
+ export NVM_DIR="$NVM_HOMEBREW"
+ fi
fi
fi
# Don't try to load nvm if command already available
# Note: nvm is a function so we need to use `which`
-! which nvm &>/dev/null || return
+which nvm &>/dev/null && return
-if [[ -f "$NVM_DIR/nvm.sh" ]]; then
+if (( $+NVM_LAZY )); then
+ # Call nvm when first using nvm, node, npm, pnpm, yarn or $NVM_LAZY_CMD
+ function nvm node npm pnpm yarn $NVM_LAZY_CMD {
+ unfunction nvm node npm pnpm yarn $NVM_LAZY_CMD
+ # Load nvm if it exists in $NVM_DIR
+ [[ -f "$NVM_DIR/nvm.sh" ]] && source "$NVM_DIR/nvm.sh"
+ "$0" "$@"
+ }
+elif [[ -f "$NVM_DIR/nvm.sh" ]]; then
# Load nvm if it exists in $NVM_DIR
- source "$NVM_DIR/nvm.sh" ${NVM_LAZY+"--no-use"}
-elif (( $+commands[brew] )); then
- # Otherwise try to load nvm installed via Homebrew
- # User can set this if they have an unusual Homebrew setup
- NVM_HOMEBREW="${NVM_HOMEBREW:-${HOMEBREW_PREFIX:-$(brew --prefix)}/opt/nvm}"
- # Load nvm from Homebrew location if it exists
- if [[ -f "$NVM_HOMEBREW/nvm.sh" ]]; then
- source "$NVM_HOMEBREW/nvm.sh" ${NVM_LAZY+"--no-use"}
- else
- return
- fi
+ source "$NVM_DIR/nvm.sh"
else
return
fi
-# Call nvm when first using node, npm or yarn
-if (( $+NVM_LAZY )); then
- function node npm yarn $NVM_LAZY_CMD {
- unfunction node npm yarn $NVM_LAZY_CMD
- nvm use default
- command "$0" "$@"
- }
-fi
-
# Autoload nvm when finding a .nvmrc file in the current directory
# Adapted from: https://github.com/nvm-sh/nvm#zsh
if (( $+NVM_AUTOLOAD )); then