Compare commits

...

26 Commits

Author SHA1 Message Date
Tim Caswell
8e0406e95b Don't bloat npm
Change-Id: I28f6cbd450713c7484bcfdd19045b18b042f5d37
2011-01-04 17:49:54 -08:00
Carter Thaxton
d3b5853454 Set MANPATH on nvm use and deactivate 2010-12-11 20:19:23 -08:00
Tim Caswell
077a661696 zsh prompts get interfered with environment variables that are named the
directory you are in. Don't define START unless we need to.

(Thanks cgcardona)

Change-Id: I256a4db0af9b40b64bc0fe8d6e393f614132db68
2010-12-10 12:52:58 -08:00
Tim Caswell
b69a2b7fc3 Bump version
Change-Id: I7e8a2e08689b0097337475bf9d7047213ae7cb39
2010-12-10 12:43:42 -08:00
Tim Caswell
924d965964 Clean up npm integration a little bit
Change-Id: I849f1056d0188aef264777e18270728b1535f61c
2010-12-10 12:43:27 -08:00
Tim Caswell
926ea1d8e9 Bump version 2010-12-10 11:50:46 -08:00
Tim Caswell
4fb13d113e Merge branch 'master' of https://github.com/isaacs/nvm
Conflicts:
	README.markdown
2010-12-10 11:50:14 -08:00
Tim Caswell
dd32e5880d Trim and update nvm 2010-12-10 11:44:58 -08:00
isaacs
9ef89f51c9 v0.0.3 2010-12-10 11:44:58 -08:00
isaacs
b82bcfbd47 A package.json install that works.
It's an ugly hack, but it works.
2010-12-10 11:44:58 -08:00
Tim Caswell
a078d6427b Install npm automatically 2010-12-10 11:42:19 -08:00
Tim Caswell
91d2be5179 Trim and update nvm 2010-12-10 11:32:16 -08:00
Tim Caswell
c657328c8d I guess export isn't needed in this context. 2010-06-08 07:42:35 -07:00
Tim Caswell
641cbb634d Fix typo. 2010-06-08 07:40:51 -07:00
Tim Caswell
d143b5f491 Update the readme since $NVM_DIR's default doesn't seem to be working. 2010-06-08 07:39:57 -07:00
Tim Caswell
e0bbea635f Don't make the function definition file executable 2010-05-14 10:41:45 -07:00
Tim Caswell
fefa00fac8 Merge branch 'master' of http://github.com/isaacs/nvm 2010-05-14 10:39:56 -07:00
Tim Caswell
359a83e6c5 Use NVM_PATH instead of NODE_PATH 2010-05-14 10:39:54 -07:00
isaacs
06e882b332 Add a package.json so that npm can install this. 2010-05-12 21:17:52 -07:00
Tim Caswell
b542e3e205 Fix minor formattin issue in the README. 2010-05-06 18:35:50 -05:00
Tim Caswell
1938f6931c Fix a typo in the docs. 2010-05-06 18:33:46 -05:00
Tim Caswell
7df245c569 Remove clone and update, these are better done by hand, add listlibs and a way to use the latest stable version 2010-05-06 18:30:27 -05:00
Tim Caswell
2527ff6b1f Use lib instead of modules for certain scripts that assume ../lib from the /bin folder. 2010-05-04 23:33:42 -05:00
Tim Caswell
d67c7011f4 Have two module installers, one for linked modules (for ones you actively develop) and one that copies the module so that the original source tree can be deleted. 2010-04-26 12:50:18 -05:00
Tim Caswell
09e7c3227b Add a NODE_BIN env variable to the current bin folder so installers know where to put their stuff. Also add a simple installer for projects without one, but that follow the standard layout. 2010-04-26 12:40:57 -05:00
Tim Caswell
93e28c3b2f Add per/version NODE_PATH and a deactivate command to return everything back to normal. 2010-04-26 12:40:57 -05:00
6 changed files with 109 additions and 70 deletions

2
.npmignore Normal file
View File

@@ -0,0 +1,2 @@
src
v*

View File

@@ -2,44 +2,36 @@
## Installation
First you'll need to make sure your system has a c++ compiler. For OSX, XCode will work, for Ubuntu, the build-essential package works. You'll also need `git` if you want to track HEAD.
First you'll need to make sure your system has a c++ compiler. For OSX, XCode will work, for Ubuntu, the build-essential and libssl-dev packages work.
To install create a folder somewhere in your filesystem with the "`nvm.sh`" file inside it. I put mine in a folder called "`.nvm`".
Or if you have `git` installed, then just clone it:
git clone git://gist.github.com/367305.git ~/.nvm
git clone git://github.com/creationix/nvm.git ~/.nvm
Then add three lines to your bash profile:
To activate nvm, you need to source it from your bash shell
NVM_DIR=$HOME/.nvm
. $NVM_DIR/nvm.sh
nvm use v0.1.91
. ~/.nvm/nvm.sh
The first line tells your system where NVM is installed, you should already have nvm.sh there. The second line loads the nvm function into your bash shell so that it's available as a command. The third line sets your default node version.
I always add this line to my ~/.bashrc or ~/.profile file to have it automatically sources upon login.
Often I also put in a line to use a specific version of node.
## Usage
To download, install, and use the v0.1.91 release of node do this:
To download, compile, and install the v0.2.5 release of node, do this:
nvm install v0.1.91
nvm install v0.2.5
And then in any new shell just use the installed version:
nvm use v0.1.91
If you want to track HEAD then use the clone command:
nvm clone
Then in any new shell you can get this version with:
nvm use HEAD
When you want to grab the latest from the node repo do:
nvm update
nvm use v0.2.5
If you want to see what versions you have installed issue:
nvm list
nvm ls
To restore your PATH, you can deactivate it.
nvm deactivate

22
install.sh Executable file
View File

@@ -0,0 +1,22 @@
#!/bin/bash
dir=$npm_config_root/.npm/$npm_package_name/$npm_package_version/package
# add lines to the bashrc.
has=$(cat ~/.bashrc | egrep "^# ADDED BY npm FOR NVM$" || true)
if [ "x$has" != "x" ]; then
exit 0
fi
cat <<NVM_CODE >>~/.bashrc
# ADDED BY npm FOR NVM
. $dir/nvm.sh
# END ADDED BY npm FOR NVM
NVM_CODE
cat <<NVM_HOWTO
To use nvm, source your .bashrc file like this:
. ~/.bashrc
or log out and back into your terminal.
NVM_HOWTO

84
nvm.sh
View File

@@ -5,9 +5,11 @@
# 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
@@ -18,50 +20,23 @@ nvm()
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 clone (Clone and install HEAD version)"
echo " nvm update (Pull and rebuild HEAD version)"
echo " nvm list (Show all installed versions)"
echo " nvm use version (Set this version in the PATH)"
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.1.91"
echo " nvm install v0.2.5"
echo " nvm use v0.2.5"
echo
;;
"clone" )
if [ $# -ne 1 ]; then
nvm help
return;
fi
mkdir -p "$NVM_DIR/src" && \
cd "$NVM_DIR/src" && \
git clone git://github.com/ry/node.git && \
cd node && \
./configure --debug --prefix="$NVM_DIR/HEAD" && \
make && \
make install && \
nvm use HEAD
cd $START
;;
"update" )
if [ $# -ne 1 ]; then
nvm help
return;
fi
cd "$NVM_DIR/src/node" && \
git pull origin master && \
./configure --debug --prefix="$NVM_DIR/HEAD" && \
make clean all && \
make install && \
nvm use HEAD
cd $START
;;
"install" )
if [ $# -ne 2 ]; then
nvm help
return;
fi
START=`pwd`
mkdir -p "$NVM_DIR/src" && \
cd "$NVM_DIR/src" && \
wget "http://nodejs.org/dist/node-$2.tar.gz" -N && \
@@ -71,12 +46,30 @@ nvm()
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
if [[ $MANPATH == *$NVM_DIR/*/share/man* ]]; then
export MANPATH=${MANPATH%$NVM_DIR/*/share/man*}${MANPATH#*$NVM_DIR/*/share/man:}
echo "$NVM_DIR/*/share/man removed from \$MANPATH"
else
echo "Could not find $NVM_DIR/*/share/man in \$MANPATH"
fi
;;
"use" )
if [ $# -ne 2 ]; then
nvm help
return;
return
fi
if [ ! -d $NVM_DIR/$2 ]; then
echo "$2 version is not installed yet"
@@ -87,21 +80,22 @@ nvm()
else
PATH="$NVM_DIR/$2/bin:$PATH"
fi
if [[ $MANPATH == *$NVM_DIR/*/share/man* ]]; then
MANPATH=${MANPATH%$NVM_DIR/*/share/man*}$NVM_DIR/$2/share/man${MANPATH#*$NVM_DIR/*/share/man}
else
MANPATH="$NVM_DIR/$2/share/man:$MANPATH"
fi
export PATH
export MANPATH
export NVM_PATH="$NVM_DIR/$2/lib/node"
export NVM_BIN="$NVM_DIR/$2/bin"
echo "Now using node $2"
;;
"list" )
"ls" )
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} *"

6
package.json Normal file
View File

@@ -0,0 +1,6 @@
{ "name" : "nvm"
, "version" : "0.0.6"
, "author" : "Tim Caswell <tim@creationix.org>"
, "scripts" :
{ "install" : "./install.sh" , "uninstall" : "./uninstall.sh" }
}

23
uninstall.sh Executable file
View File

@@ -0,0 +1,23 @@
#!/bin/bash
has=$(cat ~/.bashrc | egrep "^# ADDED BY npm FOR NVM$" || true)
if [ "x$has" == "x" ]; then
echo "doesn't have it, exiting"
exit 0
fi
tmp=~/.bashrc.tmp
cat ~/.bashrc | {
incode=0
while read line; do
if [ "$line" == "# ADDED BY npm FOR NVM" ]; then
incode=1
elif [ "$line" == "# END ADDED BY npm FOR NVM" ] \
&& [ $incode -eq 1 ]; then
incode=0
elif [ $incode -eq 0 ]; then
echo "$line" >> $tmp
fi
done
}
mv $tmp ~/.bashrc