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.
130 lines
3.4 KiB
130 lines
3.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 |
|
|
|
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 released version)" |
|
echo " nvm list (Show all installed versions)" |
|
echo " nvm use version (Set this version in the PATH)" |
|
echo " nvm use (Use the latest stable version)" |
|
echo " nvm deactivate (Remove nvm entry from PATH)" |
|
echo " nvm addlib (Copies the module in cwd to the current env)" |
|
echo " nvm linklib (Links the module in cwd to the current env)" |
|
echo " nvm listlibs (Show the modules in the current env)" |
|
echo |
|
echo "Example:" |
|
echo " nvm install v0.1.94" |
|
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:} |
|
unset NODE_PATH |
|
echo "$NVM_DIR/*/bin removed from \$PATH" |
|
else |
|
echo "Could not find $NVM_DIR/*/bin in \$PATH" |
|
fi |
|
;; |
|
"addlib" ) |
|
mkdir -p $NODE_PATH |
|
mkdir -p $NODE_BIN |
|
if [ -d `pwd`/lib ]; then |
|
cp -r `pwd`/lib/ "$NODE_PATH/" |
|
cp -r `pwd`/bin/ "$NODE_BIN/" |
|
else |
|
echo "Can't find lib dir at `pwd`/lib" |
|
fi |
|
;; |
|
"linklib" ) |
|
mkdir -p $NODE_PATH |
|
mkdir -p $NODE_BIN |
|
if [ -d `pwd`/lib ]; then |
|
ln -sf `pwd`/lib/* "$NODE_PATH/" |
|
ln -sf `pwd`/bin/* "$NODE_BIN/" |
|
else |
|
echo "Can't find lib dir at `pwd`/lib" |
|
fi |
|
;; |
|
"use" ) |
|
if [ $# -ne 2 ]; then |
|
for f in $NVM_DIR/v*; do |
|
nvm use ${f##*/} > /dev/null |
|
done |
|
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 NODE_PATH="$NVM_DIR/$2/lib/node" |
|
export NODE_BIN="$NVM_DIR/$2/bin" |
|
mkdir -p "$NODE_PATH" |
|
mkdir -p "$NODE_BIN" |
|
echo "Now using node $2" |
|
;; |
|
"listlibs" ) |
|
ls $NODE_PATH | grep -v wafadmin |
|
;; |
|
"list" ) |
|
if [ $# -ne 1 ]; then |
|
nvm help |
|
return; |
|
fi |
|
if [ -d $NVM_DIR/HEAD ]; then |
|
if [[ $PATH == *$NVM_DIR/HEAD/bin* ]]; then |
|
echo "HEAD *" |
|
else |
|
echo "HEAD" |
|
fi |
|
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 |
|
} |