You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.4 KiB
95 lines
2.4 KiB
# Node Version Manager |
|
# Implemented as a bash function |
|
# To use source this file from your bash profile |
|
# |
|
# Implemented by Tim Caswell <tim@creationix.com> |
|
# 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 <version> Download and install a <version>" |
|
echo " nvm use <version> Modify PATH to use <version>" |
|
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 |
|
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 |
|
}
|
|
|