From 483447082b04c3e4830f52a69b23f5a696bf4da5 Mon Sep 17 00:00:00 2001 From: Jamie Rolfs Date: Thu, 16 Mar 2017 03:12:18 -0700 Subject: [PATCH] Add nodenv support to Node.js module - Implementation from https://github.com/sorin-ionescu/prezto/pull/1001 - Documentation from https://github.com/sorin-ionescu/prezto/pull/1178 --- modules/node/README.md | 9 +++++++++ modules/node/functions/node-info | 2 ++ modules/node/init.zsh | 8 ++++++++ 3 files changed, 19 insertions(+) diff --git a/modules/node/README.md b/modules/node/README.md index 5f0c3caf..66e9784d 100644 --- a/modules/node/README.md +++ b/modules/node/README.md @@ -10,6 +10,13 @@ nvm [nvm][5] allows for managing multiple, isolated Node.js installations in the home directory. +nodenv +------ + +[nodenv][6] does one thing well. nodenv is concerned solely with switching +Node versions. It's simple and predictable, Just Works, and is rock solid in +production. nodenv is forked from the popular [rbenv][7]. + Functions --------- @@ -43,3 +50,5 @@ Authors [3]: http://nodejs.org/api [4]: https://github.com/sorin-ionescu/prezto/issues [5]: https://github.com/creationix/nvm +[6]: https://github.com/nodenv/nodenv +[7]: https://github.com/sstephenson/rbenv diff --git a/modules/node/functions/node-info b/modules/node/functions/node-info index 7742f904..e4cd52d0 100644 --- a/modules/node/functions/node-info +++ b/modules/node/functions/node-info @@ -15,6 +15,8 @@ typeset -gA node_info if (( $+functions[nvm_version] )); then version="${$(nvm_version)#v}" +elif (( $+commands[nodenv] )); then + version="${${$(nodenv version)#v}[(w)0]}" fi if [[ "$version" != (none|) ]]; then diff --git a/modules/node/init.zsh b/modules/node/init.zsh index 6d600789..2eb297c1 100644 --- a/modules/node/init.zsh +++ b/modules/node/init.zsh @@ -14,6 +14,14 @@ if [[ -s "$HOME/.nvm/nvm.sh" ]]; then elif (( $+commands[brew] )) && [[ -d "$(brew --prefix nvm 2>/dev/null)" ]]; then source $(brew --prefix nvm)/nvm.sh +# Load manually installed nodenv into the shell session. +elif [[ -s "$HOME/.nodenv/bin/nodenv" ]]; then + eval "$($HOME/.nodenv/bin/nodenv init -)" + +# Load package manager installed nodenv into the shell session. +elif (( $+commands[brew] )) && [[ -d "$(brew --prefix nodenv 2>/dev/null)" ]]; then + eval "$($(brew --prefix nodenv)/bin/nodenv init -)" + # Return if requirements are not found. elif (( ! $+commands[node] )); then return 1