Add NVM_LAZY_LOAD_EXTRA_COMMANDS option

This commit is contained in:
Joeri de Gooijer 2020-05-27 16:07:51 +02:00
parent fdf4d6cc7d
commit e07475126c
3 changed files with 50 additions and 0 deletions

View File

@ -108,6 +108,16 @@ Performance comparison:
( _zsh_nvm_lazy_load; ) 0.01s user 0.01s system 168% cpu 0.012 total
```
#### Extra commands to trigger lazy loading
By default lazy loading nvm is triggered by running the `nvm`, `node`, `npm` commands or any installed npm global binaries.
If you want to trigger the lazy loading via extra arbitrary commands you can define `NVM_LAZY_LOAD_EXTRA_COMMANDS` and set it to an array of commands as strings.
```shell
export NVM_LAZY_LOAD_EXTRA_COMMANDS=('vim', 'ls')
vim --version
#node is now loaded
```
### Don't autoload node
By default when `nvm` is loaded it'll automatically run `nvm use default` and load your default `node` version along with `npm` and any global modules. You can disable this behaviour by exporting the `NVM_NO_USE` environment variable and setting it to `true`. It must be set before `zsh-nvm` is loaded.

View File

@ -0,0 +1,39 @@
#!/bin/sh
source ../common.sh
# Node.js version to install
node_version=v5.11.0
# Load zsh-nvm and install Node.js in subshell
(load_zsh_nvm && nvm install "$node_version" && [[ "$(node --version)" == "$node_version" ]]) || die "node wasn't installed"
# Check node isn't available
[[ "$(node --version)" != "$node_version" ]] || die "node shouldn't be available $(node --version)"
# Set NVM_LAZY_LOAD to true
export NVM_LAZY_LOAD=true
export NVM_LAZY_LOAD_EXTRA_COMMANDS=('ls' 'whoami')
# Load zsh-nvm
load_zsh_nvm
# Check nvm is a lazy load function
[[ $(which nvm) == *"_zsh_nvm_load"* ]] || die "nvm should be a lazy load function"
# Check node is a lazy load function
[[ $(command -v node) == "node" ]] || die "node should be a shell function"
# Check npm is a lazy load function
[[ $(command -v npm) == "npm" ]] || die "npm should be a shell function"
# Init lazy loader
whoami || die "couldn't run lazy loader"
# Check nvm is not a lazy load function
[[ $(which nvm) != *"_zsh_nvm_load"* ]] || die "nvm should not be a lazy load function"
# Check node is a binary
[[ "$(command -v node)" == "$(nvm_version_path $node_version)/bin/node" ]] || die "node should now be a binary"
# Check npm is a binary
[[ "$(command -v npm)" == "$(nvm_version_path $node_version)/bin/npm" ]] || die "npm should now be a binary"

View File

@ -93,6 +93,7 @@ _zsh_nvm_lazy_load() {
# Add nvm
global_binaries+=('nvm')
global_binaries+=($NVM_LAZY_LOAD_EXTRA_COMMANDS)
# Remove any binaries that conflict with current aliases
local cmds