Browse Source

nvm: only lazy-load nvm if the NVM_LAZY setting is set

Marc Cornellà 4 years ago
parent
commit
a33c0cdb46
2 changed files with 13 additions and 7 deletions
  1. 4 0
      plugins/nvm/README.md
  2. 9 7
      plugins/nvm/nvm.plugin.zsh

+ 4 - 0
plugins/nvm/README.md

@@ -16,3 +16,7 @@ plugins=(... nvm)
   
 - **`NVM_HOMEBREW`**: if you installed nvm via Homebrew, in a directory other than `/usr/local/opt/nvm`, you
   can set `NVM_HOMEBREW` to be the directory where you installed it.
+
+- **`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` and `yarn`, so when you call either of these three, nvm will load with `nvm use default`.

+ 9 - 7
plugins/nvm/nvm.plugin.zsh

@@ -12,21 +12,23 @@ which nvm &> /dev/null && return
 
 if [[ -f "$NVM_DIR/nvm.sh" ]]; then
   # Load nvm if it exists in $NVM_DIR
-  source "$NVM_DIR/nvm.sh" --no-use
+  source "$NVM_DIR/nvm.sh" ${NVM_LAZY+"--no-use"}
 else
   # Otherwise try to load nvm installed via Homebrew
   # User can set this if they have an unusual Homebrew setup
   NVM_HOMEBREW="${NVM_HOMEBREW:-/usr/local/opt/nvm}"
   # Load nvm from Homebrew location if it exists
-  [[ -f "$NVM_HOMEBREW/nvm.sh" ]] && source "$NVM_HOMEBREW/nvm.sh" --no-use
+  [[ -f "$NVM_HOMEBREW/nvm.sh" ]] && source "$NVM_HOMEBREW/nvm.sh" ${NVM_LAZY+"--no-use"}
 fi
 
 # Call nvm when first using node, npm or yarn
-function node npm yarn {
-  unfunction node npm yarn
-  nvm use default
-  command "$0" "$@"
-}
+if (( $+NVM_LAZY )); then
+  function node npm yarn {
+    unfunction node npm yarn
+    nvm use default
+    command "$0" "$@"
+  }
+fi
 
 # Load nvm bash completion
 for nvm_completion in "$NVM_DIR/bash_completion" "$NVM_HOMEBREW/etc/bash_completion.d/nvm"; do