# Node Version Manager # Implemented as a bash function # To use source this file from your bash profile # # Implemented by Tim Caswell # with much bash help from Matthew Ranney # Auto detect the NVM_DIR using magic bash 3.x stuff export NVM_DIR=$(dirname ${BASH_ARGV[0]}) nvm() { START=`pwd` if [ $# -lt 1 ]; then nvm help return fi case $1 in "help" ) echo echo "Node Version Manager" echo echo "Usage:" echo " nvm help Show this message" echo " nvm install Download and install a " echo " nvm use Modify PATH to use " echo " nvm ls List versions currently installed" echo " nvm deactivate Undo effects of NVM on current shell" echo echo "Example:" echo " nvm install v0.2.5" echo " nvm use v0.2.5" echo ;; "install" ) if [ $# -ne 2 ]; then nvm help return; fi mkdir -p "$NVM_DIR/src" && \ cd "$NVM_DIR/src" && \ wget "http://nodejs.org/dist/node-$2.tar.gz" -N && \ tar -xzf "node-$2.tar.gz" && \ cd "node-$2" && \ ./configure --prefix="$NVM_DIR/$2" && \ make && \ make install && \ nvm use $2 if ! which npm ; then echo "Installing npm..." curl http://npmjs.org/install.sh | sh fi cd $START ;; "deactivate" ) if [[ $PATH == *$NVM_DIR/*/bin* ]]; then export PATH=${PATH%$NVM_DIR/*/bin*}${PATH#*$NVM_DIR/*/bin:} echo "$NVM_DIR/*/bin removed from \$PATH" else echo "Could not find $NVM_DIR/*/bin in \$PATH" fi ;; "use" ) if [ $# -ne 2 ]; then nvm help return fi if [ ! -d $NVM_DIR/$2 ]; then echo "$2 version is not installed yet" return; fi if [[ $PATH == *$NVM_DIR/*/bin* ]]; then PATH=${PATH%$NVM_DIR/*/bin*}$NVM_DIR/$2/bin${PATH#*$NVM_DIR/*/bin} else PATH="$NVM_DIR/$2/bin:$PATH" fi export PATH export NVM_PATH="$NVM_DIR/$2/lib/node" export NVM_BIN="$NVM_DIR/$2/bin" echo "Now using node $2" ;; "ls" ) if [ $# -ne 1 ]; then nvm help return; fi for f in $NVM_DIR/v*; do if [[ $PATH == *$f/bin* ]]; then echo "v${f##*v} *" else echo "v${f##*v}" fi done ;; * ) nvm help ;; esac }