nvm.plugin.zsh 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. # See https://github.com/nvm-sh/nvm#installation-and-update
  2. if [[ -z "$NVM_DIR" ]]; then
  3. if [[ -d "$HOME/.nvm" ]]; then
  4. export NVM_DIR="$HOME/.nvm"
  5. elif [[ -d "${XDG_CONFIG_HOME:-$HOME/.config}/nvm" ]]; then
  6. export NVM_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/nvm"
  7. elif (( $+commands[brew] )); then
  8. NVM_HOMEBREW="${NVM_HOMEBREW:-${HOMEBREW_PREFIX:-$(brew --prefix)}/opt/nvm}"
  9. if [[ -d "$NVM_HOMEBREW" ]]; then
  10. export NVM_DIR="$NVM_HOMEBREW"
  11. fi
  12. fi
  13. fi
  14. # Don't try to load nvm if command already available
  15. # Note: nvm is a function so we need to use `which`
  16. which nvm &>/dev/null && return
  17. if zstyle -t ':omz:plugins:nvm' lazy; then
  18. # Call nvm when first using nvm, node, npm, pnpm, yarn or other commands in lazy-cmd
  19. zstyle -a ':omz:plugins:nvm' lazy-cmd nvm_lazy_cmd
  20. eval "
  21. function nvm node npm npx pnpm yarn $nvm_lazy_cmd {
  22. unfunction nvm node npm npx pnpm yarn $nvm_lazy_cmd
  23. # Load nvm if it exists in \$NVM_DIR
  24. [[ -f \"\$NVM_DIR/nvm.sh\" ]] && source \"\$NVM_DIR/nvm.sh\"
  25. \"\$0\" \"\$@\"
  26. }
  27. "
  28. unset nvm_lazy_cmd
  29. elif [[ -f "$NVM_DIR/nvm.sh" ]]; then
  30. # Load nvm if it exists in $NVM_DIR
  31. source "$NVM_DIR/nvm.sh"
  32. else
  33. return
  34. fi
  35. # Autoload nvm when finding a .nvmrc file in the current directory
  36. # Adapted from: https://github.com/nvm-sh/nvm#zsh
  37. if zstyle -t ':omz:plugins:nvm' autoload; then
  38. function load-nvmrc {
  39. local node_version="$(nvm version)"
  40. local nvmrc_path="$(nvm_find_nvmrc)"
  41. local nvm_silent=""
  42. zstyle -t ':omz:plugins:nvm' silent-autoload && nvm_silent="--silent"
  43. if [[ -n "$nvmrc_path" ]]; then
  44. local nvmrc_node_version=$(nvm version $(cat "$nvmrc_path" | tr -dc '[:print:]'))
  45. if [[ "$nvmrc_node_version" = "N/A" ]]; then
  46. nvm install
  47. elif [[ "$nvmrc_node_version" != "$node_version" ]]; then
  48. nvm use $nvm_silent
  49. fi
  50. elif [[ "$node_version" != "$(nvm version default)" ]]; then
  51. if [[ -z $nvm_silent ]]; then
  52. echo "Reverting to nvm default version"
  53. fi
  54. nvm use default $nvm_silent
  55. fi
  56. }
  57. autoload -U add-zsh-hook
  58. add-zsh-hook chpwd load-nvmrc
  59. load-nvmrc
  60. fi
  61. # Load nvm bash completion
  62. for nvm_completion in "$NVM_DIR/bash_completion" "$NVM_HOMEBREW/etc/bash_completion.d/nvm"; do
  63. if [[ -f "$nvm_completion" ]]; then
  64. # Load bashcompinit
  65. autoload -U +X bashcompinit && bashcompinit
  66. # Bypass compinit call in nvm bash completion script. See:
  67. # https://github.com/nvm-sh/nvm/blob/4436638/bash_completion#L86-L93
  68. ZSH_VERSION= source "$nvm_completion"
  69. break
  70. fi
  71. done
  72. unset NVM_HOMEBREW nvm_completion