mirror of
				https://github.com/lukechilds/zsh-nvm.git
				synced 2025-10-30 14:46:28 +08:00 
			
		
		
		
	Add NVM_LAZY_LOAD_EXTRA_COMMANDS option
This commit is contained in:
		
							parent
							
								
									fdf4d6cc7d
								
							
						
					
					
						commit
						e07475126c
					
				
							
								
								
									
										10
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								README.md
									
									
									
									
									
								
							@ -108,6 +108,16 @@ Performance comparison:
 | 
				
			|||||||
( _zsh_nvm_lazy_load; )  0.01s user 0.01s system 168% cpu 0.012 total
 | 
					( _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
 | 
					### 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.
 | 
					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.
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										39
									
								
								tests/options/NVM_LAZY_LOAD_EXTRA_COMMANDS
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										39
									
								
								tests/options/NVM_LAZY_LOAD_EXTRA_COMMANDS
									
									
									
									
									
										Executable 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"
 | 
				
			||||||
@ -93,6 +93,7 @@ _zsh_nvm_lazy_load() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  # Add nvm
 | 
					  # Add nvm
 | 
				
			||||||
  global_binaries+=('nvm')
 | 
					  global_binaries+=('nvm')
 | 
				
			||||||
 | 
					  global_binaries+=($NVM_LAZY_LOAD_EXTRA_COMMANDS)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # Remove any binaries that conflict with current aliases
 | 
					  # Remove any binaries that conflict with current aliases
 | 
				
			||||||
  local cmds
 | 
					  local cmds
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user