mirror of
				https://github.com/ohmyzsh/ohmyzsh.git
				synced 2025-11-04 13:21:19 +08:00 
			
		
		
		
	feat(nodenv): add plugin for nodenv (#9880)
				
					
				
			Co-authored-by: Matthew Boston <matthew@matthewboston.com>
This commit is contained in:
		
							parent
							
								
									16050ab80e
								
							
						
					
					
						commit
						21bdb18b2d
					
				
							
								
								
									
										20
									
								
								plugins/nodenv/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								plugins/nodenv/README.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,20 @@
 | 
			
		||||
# nodenv plugin
 | 
			
		||||
 | 
			
		||||
The primary job of this plugin is to provide `nodenv_prompt_info` which can be added to your theme to include Node
 | 
			
		||||
version information into your prompt.
 | 
			
		||||
 | 
			
		||||
To use it, add `nodenv` to the plugins array in your zshrc file:
 | 
			
		||||
 | 
			
		||||
```zsh
 | 
			
		||||
plugins=(... nodenv)
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Functions
 | 
			
		||||
 | 
			
		||||
* `nodenv_prompt_info`: displays the Node version in use by nodenv; or the global Node
 | 
			
		||||
  version, if nodenv wasn't found. You can use this function in your prompt by adding
 | 
			
		||||
  `$(nodenv_prompt_info)` to PROMPT or RPROMPT:
 | 
			
		||||
 | 
			
		||||
  ```zsh
 | 
			
		||||
  RPROMPT='$(nodenv_prompt_info)'
 | 
			
		||||
  ```
 | 
			
		||||
							
								
								
									
										43
									
								
								plugins/nodenv/nodenv.plugin.zsh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								plugins/nodenv/nodenv.plugin.zsh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,43 @@
 | 
			
		||||
# This plugin loads nodenv into the current shell and provides prompt info via
 | 
			
		||||
# the 'nodenv_prompt_info' function.
 | 
			
		||||
 | 
			
		||||
FOUND_NODENV=${+commands[nodenv]}
 | 
			
		||||
 | 
			
		||||
if [[ $FOUND_NODENV -ne 1 ]]; then
 | 
			
		||||
  nodenvdirs=(
 | 
			
		||||
    "$HOME/.nodenv"
 | 
			
		||||
    "/usr/local/nodenv"
 | 
			
		||||
    "/opt/nodenv"
 | 
			
		||||
    "/usr/local/opt/nodenv"
 | 
			
		||||
  )
 | 
			
		||||
  for dir in $nodenvdirs; do
 | 
			
		||||
    if [[ -d "${dir}/bin" ]]; then
 | 
			
		||||
      export PATH="$PATH:${dir}/bin"
 | 
			
		||||
      FOUND_NODENV=1
 | 
			
		||||
      break
 | 
			
		||||
    fi
 | 
			
		||||
  done
 | 
			
		||||
 | 
			
		||||
  if [[ $FOUND_NODENV -ne 1 ]]; then
 | 
			
		||||
    if (( $+commands[brew] )) && dir=$(brew --prefix nodenv 2>/dev/null); then
 | 
			
		||||
      if [[ -d "${dir}/bin" ]]; then
 | 
			
		||||
        export PATH="$PATH:${dir}/bin"
 | 
			
		||||
        FOUND_NODENV=1
 | 
			
		||||
      fi
 | 
			
		||||
    fi
 | 
			
		||||
  fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [[ $FOUND_NODENV -eq 1 ]]; then
 | 
			
		||||
  eval "$(nodenv init --no-rehash - zsh)"
 | 
			
		||||
  function nodenv_prompt_info() {
 | 
			
		||||
    nodenv version-name 2>/dev/null
 | 
			
		||||
  }
 | 
			
		||||
else
 | 
			
		||||
  # fallback to system node
 | 
			
		||||
  function nodenv_prompt_info() {
 | 
			
		||||
    echo "system: $(node -v 2>&1 | cut -c 2-)"
 | 
			
		||||
  }
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
unset FOUND_NODENV nodenvdirs dir
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user