Compare commits
17 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
db8acf11fd | ||
|
|
a6be718387 | ||
|
|
e2c4c88136 | ||
|
|
4cd0b078d0 | ||
|
|
f6ba08253b | ||
|
|
0ecb2879b9 | ||
|
|
e3b84499c2 | ||
|
|
b313f62749 | ||
|
|
7f3a794d89 | ||
|
|
ba1be9b4ea | ||
|
|
652a9ef9b5 | ||
|
|
0d81a219ae | ||
|
|
d6e457354f | ||
|
|
6668dc5c47 | ||
|
|
3d9c1d7852 | ||
|
|
29f582611b | ||
|
|
673cda56c4 |
@@ -8,11 +8,11 @@ First you'll need to make sure your system has a c++ compiler. For OSX, XCode w
|
|||||||
|
|
||||||
To install you could use the [install script][2] using cURL:
|
To install you could use the [install script][2] using cURL:
|
||||||
|
|
||||||
curl https://raw.githubusercontent.com/creationix/nvm/v0.6.0/install.sh | sh
|
curl https://raw.githubusercontent.com/creationix/nvm/v0.7.0/install.sh | sh
|
||||||
|
|
||||||
or Wget:
|
or Wget:
|
||||||
|
|
||||||
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.6.0/install.sh | sh
|
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.7.0/install.sh | sh
|
||||||
|
|
||||||
<sub>The script clones the nvm repository to `~/.nvm` and adds the source line to your profile (`~/.bash_profile`, `~/.zshrc` or `~/.profile`).</sub>
|
<sub>The script clones the nvm repository to `~/.nvm` and adds the source line to your profile (`~/.bash_profile`, `~/.zshrc` or `~/.profile`).</sub>
|
||||||
|
|
||||||
@@ -132,17 +132,17 @@ nvm alias
|
|||||||
default
|
default
|
||||||
|
|
||||||
$ nvm alias my_alias [tab][tab]
|
$ nvm alias my_alias [tab][tab]
|
||||||
v0.4.11 v0.4.12 v0.6.14
|
v0.6.21 v0.8.26 v0.10.28
|
||||||
|
|
||||||
nvm use
|
nvm use
|
||||||
|
|
||||||
$ nvm use [tab][tab]
|
$ nvm use [tab][tab]
|
||||||
my_alias default v0.4.11 v0.4.12 v0.6.14
|
my_alias default v0.6.21 v0.8.26 v0.10.28
|
||||||
|
|
||||||
nvm uninstall
|
nvm uninstall
|
||||||
|
|
||||||
$ nvm uninstall [tab][tab]
|
$ nvm uninstall [tab][tab]
|
||||||
my_alias default v0.4.11 v0.4.12 v0.6.14
|
my_alias default v0.6.21 v0.8.26 v0.10.28
|
||||||
|
|
||||||
## Problems
|
## Problems
|
||||||
|
|
||||||
@@ -163,7 +163,7 @@ After the v0.8.6 release of node, nvm tries to install from binary packages. But
|
|||||||
nvm install -s 0.8.6
|
nvm install -s 0.8.6
|
||||||
|
|
||||||
[1]: https://github.com/creationix/nvm.git
|
[1]: https://github.com/creationix/nvm.git
|
||||||
[2]: https://github.com/creationix/nvm/blob/v0.6.0/install.sh
|
[2]: https://github.com/creationix/nvm/blob/v0.7.0/install.sh
|
||||||
[3]: https://travis-ci.org/creationix/nvm
|
[3]: https://travis-ci.org/creationix/nvm
|
||||||
[Urchin]: https://github.com/scraperwiki/urchin
|
[Urchin]: https://github.com/scraperwiki/urchin
|
||||||
|
|
||||||
|
|||||||
63
nvm.sh
63
nvm.sh
@@ -97,6 +97,18 @@ nvm_format_version() {
|
|||||||
echo "$1" | sed -e 's/^\([0-9]\)/v\1/g'
|
echo "$1" | sed -e 's/^\([0-9]\)/v\1/g'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nvm_strip_path() {
|
||||||
|
echo "$1" | sed -e "s#$NVM_DIR/[^/]*$2[^:]*:##g" -e "s#:$NVM_DIR/[^/]*$2[^:]*##g" -e "s#$NVM_DIR/[^/]*$2[^:]*##g"
|
||||||
|
}
|
||||||
|
|
||||||
|
nvm_prepend_path() {
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
echo "$2"
|
||||||
|
else
|
||||||
|
echo "$2:$1"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
nvm_binary_available() {
|
nvm_binary_available() {
|
||||||
# binaries started with node 0.8.6
|
# binaries started with node 0.8.6
|
||||||
local MINIMAL="0.8.6"
|
local MINIMAL="0.8.6"
|
||||||
@@ -306,10 +318,14 @@ nvm() {
|
|||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
|
|
||||||
[ -d "$NVM_DIR/$VERSION" ] && echo "$VERSION is already installed." && return
|
if [ -d "$NVM_DIR/$VERSION" ]; then
|
||||||
|
echo "$VERSION is already installed."
|
||||||
|
nvm use "$VERSION"
|
||||||
|
return $?
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$VERSION" = "N/A" ]; then
|
if [ "$VERSION" = "N/A" ]; then
|
||||||
echo "Version '$VERSION' not found - try \`nvm ls-remote\` to browse available versions."
|
echo "Version '$provided_version' not found - try \`nvm ls-remote\` to browse available versions."
|
||||||
return 3
|
return 3
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -424,20 +440,20 @@ nvm() {
|
|||||||
;;
|
;;
|
||||||
"deactivate" )
|
"deactivate" )
|
||||||
if [ `expr "$PATH" : ".*$NVM_DIR/.*/bin.*"` != 0 ] ; then
|
if [ `expr "$PATH" : ".*$NVM_DIR/.*/bin.*"` != 0 ] ; then
|
||||||
export PATH=${PATH%$NVM_DIR/*/bin*}${PATH#*$NVM_DIR/*/bin:}
|
export PATH=`nvm_strip_path "$PATH" "/bin"`
|
||||||
hash -r
|
hash -r
|
||||||
echo "$NVM_DIR/*/bin removed from \$PATH"
|
echo "$NVM_DIR/*/bin removed from \$PATH"
|
||||||
else
|
else
|
||||||
echo "Could not find $NVM_DIR/*/bin in \$PATH"
|
echo "Could not find $NVM_DIR/*/bin in \$PATH"
|
||||||
fi
|
fi
|
||||||
if [ `expr "$MANPATH" : ".*$NVM_DIR/.*/share/man.*"` != 0 ] ; then
|
if [ `expr "$MANPATH" : ".*$NVM_DIR/.*/share/man.*"` != 0 ] ; then
|
||||||
export MANPATH=${MANPATH%$NVM_DIR/*/share/man*}${MANPATH#*$NVM_DIR/*/share/man:}
|
export MANPATH=`nvm_strip_path "$MANPATH" "/share/man"`
|
||||||
echo "$NVM_DIR/*/share/man removed from \$MANPATH"
|
echo "$NVM_DIR/*/share/man removed from \$MANPATH"
|
||||||
else
|
else
|
||||||
echo "Could not find $NVM_DIR/*/share/man in \$MANPATH"
|
echo "Could not find $NVM_DIR/*/share/man in \$MANPATH"
|
||||||
fi
|
fi
|
||||||
if [ `expr "$NODE_PATH" : ".*$NVM_DIR/.*/lib/node_modules.*"` != 0 ] ; then
|
if [ `expr "$NODE_PATH" : ".*$NVM_DIR/.*/lib/node_modules.*"` != 0 ] ; then
|
||||||
export NODE_PATH=${NODE_PATH%$NVM_DIR/*/lib/node_modules*}${NODE_PATH#*$NVM_DIR/*/lib/node_modules:}
|
export NODE_PATH=`nvm_strip_path "$NODE_PATH" "/lib/node_modules"`
|
||||||
echo "$NVM_DIR/*/lib/node_modules removed from \$NODE_PATH"
|
echo "$NVM_DIR/*/lib/node_modules removed from \$NODE_PATH"
|
||||||
else
|
else
|
||||||
echo "Could not find $NVM_DIR/*/lib/node_modules in \$NODE_PATH"
|
echo "Could not find $NVM_DIR/*/lib/node_modules in \$NODE_PATH"
|
||||||
@@ -467,25 +483,21 @@ nvm() {
|
|||||||
echo "$VERSION version is not installed yet"
|
echo "$VERSION version is not installed yet"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
if [ `expr "$PATH" : ".*$NVM_DIR/.*/bin"` != 0 ]; then
|
# Strip other version from PATH
|
||||||
PATH=${PATH%$NVM_DIR/*/bin*}$NVM_DIR/$VERSION/bin${PATH#*$NVM_DIR/*/bin}
|
PATH=`nvm_strip_path "$PATH" "/bin"`
|
||||||
else
|
# Prepend current version
|
||||||
PATH="$NVM_DIR/$VERSION/bin:$PATH"
|
PATH=`nvm_prepend_path "$PATH" "$NVM_DIR/$VERSION/bin"`
|
||||||
fi
|
|
||||||
if [ -z "$MANPATH" ]; then
|
if [ -z "$MANPATH" ]; then
|
||||||
MANPATH=$(manpath)
|
MANPATH=$(manpath)
|
||||||
fi
|
fi
|
||||||
MANPATH=${MANPATH#*$NVM_DIR/*/man:}
|
# Strip other version from MANPATH
|
||||||
if [ `expr "$MANPATH" : ".*$NVM_DIR/.*/share/man"` != 0 ]; then
|
MANPATH=`nvm_strip_path "$MANPATH" "/share/man"`
|
||||||
MANPATH=${MANPATH%$NVM_DIR/*/share/man*}$NVM_DIR/$VERSION/share/man${MANPATH#*$NVM_DIR/*/share/man}
|
# Prepend current version
|
||||||
else
|
MANPATH=`nvm_prepend_path "$MANPATH" "$NVM_DIR/$VERSION/share/man"`
|
||||||
MANPATH="$NVM_DIR/$VERSION/share/man:$MANPATH"
|
# Strip other version from NODE_PATH
|
||||||
fi
|
NODE_PATH=`nvm_strip_path "$NODE_PATH" "/lib/node_modules"`
|
||||||
if [ `expr "$NODE_PATH" : ".*$NVM_DIR/.*/lib/node_modules.*"` != 0 ]; then
|
# Prepend current version
|
||||||
NODE_PATH=${NODE_PATH%$NVM_DIR/*/lib/node_modules*}$NVM_DIR/$VERSION/lib/node_modules${NODE_PATH#*$NVM_DIR/*/lib/node_modules}
|
NODE_PATH=`nvm_prepend_path "$NODE_PATH" "$NVM_DIR/$VERSION/lib/node_modules"`
|
||||||
else
|
|
||||||
NODE_PATH="$NVM_DIR/$VERSION/lib/node_modules:$NODE_PATH"
|
|
||||||
fi
|
|
||||||
export PATH
|
export PATH
|
||||||
hash -r
|
hash -r
|
||||||
export MANPATH
|
export MANPATH
|
||||||
@@ -530,11 +542,8 @@ nvm() {
|
|||||||
echo "$VERSION version is not installed yet"
|
echo "$VERSION version is not installed yet"
|
||||||
return;
|
return;
|
||||||
fi
|
fi
|
||||||
if [ `expr "$NODE_PATH" : ".*$NVM_DIR/.*/lib/node_modules.*"` != 0 ]; then
|
RUN_NODE_PATH=`nvm_strip_path "$NODE_PATH" "/lib/node_modules"`
|
||||||
RUN_NODE_PATH=${NODE_PATH%$NVM_DIR/*/lib/node_modules*}$NVM_DIR/$VERSION/lib/node_modules${NODE_PATH#*$NVM_DIR/*/lib/node_modules}
|
RUN_NODE_PATH=`nvm_prepend_path "$NODE_PATH" "$NVM_DIR/$VERSION/lib/node_modules"`
|
||||||
else
|
|
||||||
RUN_NODE_PATH="$NVM_DIR/$VERSION/lib/node_modules:$NODE_PATH"
|
|
||||||
fi
|
|
||||||
echo "Running node $VERSION"
|
echo "Running node $VERSION"
|
||||||
NODE_PATH=$RUN_NODE_PATH $NVM_DIR/$VERSION/bin/node "$@"
|
NODE_PATH=$RUN_NODE_PATH $NVM_DIR/$VERSION/bin/node "$@"
|
||||||
;;
|
;;
|
||||||
@@ -616,7 +625,7 @@ nvm() {
|
|||||||
nvm_version $2
|
nvm_version $2
|
||||||
;;
|
;;
|
||||||
"--version" )
|
"--version" )
|
||||||
echo "nvm v0.6.0"
|
echo "0.7.0"
|
||||||
;;
|
;;
|
||||||
* )
|
* )
|
||||||
nvm help
|
nvm help
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "nvm",
|
"name": "nvm",
|
||||||
"version": "0.6.0",
|
"version": "0.7.0",
|
||||||
"description": "Node Version Manager - Simple bash script to manage multiple active node.js versions",
|
"description": "Node Version Manager - Simple bash script to manage multiple active node.js versions",
|
||||||
"directories": {
|
"directories": {
|
||||||
"test": "test"
|
"test": "test"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ die () { echo $@ ; exit 1; }
|
|||||||
|
|
||||||
. ../../nvm.sh
|
. ../../nvm.sh
|
||||||
nvm use v0.2.3 &&
|
nvm use v0.2.3 &&
|
||||||
[ `expr $PATH : ".*v0.2.3/.*/bin"` != 0 ] || die "Failed to activate v0.2.3"
|
[ `expr $PATH : ".*v0.2.3/.*/bin"` != 0 ] && [ `expr $NODE_PATH : ".*v0.2.3/.*/lib/node_modules"` != 0 ] || die "Failed to activate v0.2.3"
|
||||||
|
|
||||||
nvm deactivate &&
|
nvm deactivate &&
|
||||||
[ `expr $PATH : ".*v0.2.3/.*/bin"` = 0 ] || die "Failed to deactivate v0.2.3"
|
[ `expr $PATH : ".*v0.2.3/.*/bin"` = 0 ] && [ `expr $NODE_PATH : ".*v0.2.3/.*/lib/node_modules"` = 0 ] || die "Failed to deactivate v0.2.3"
|
||||||
|
|||||||
7
test/fast/Running "nvm install" with an invalid version fails nicely
Executable file
7
test/fast/Running "nvm install" with an invalid version fails nicely
Executable file
@@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../nvm.sh
|
||||||
|
[ "$(nvm install invalid.invalid)" = "Version 'invalid.invalid' not found - try \`nvm ls-remote\` to browse available versions." ] || die "nvm installing an invalid version did not print a nice error message"
|
||||||
|
|
||||||
18
test/fast/Unit tests/nvm_prepend_path
Executable file
18
test/fast/Unit tests/nvm_prepend_path
Executable file
@@ -0,0 +1,18 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
TEST_PATH=/usr/bin:/usr/local/bin
|
||||||
|
|
||||||
|
NEW_PATH=`nvm_prepend_path "$TEST_PATH" "$NVM_DIR/v0.2.5/bin"`
|
||||||
|
|
||||||
|
[ "$NEW_PATH" = "$NVM_DIR/v0.2.5/bin:/usr/bin:/usr/local/bin" ] || die "Not correctly prepended: $STRIPPED_PATH "
|
||||||
|
|
||||||
|
|
||||||
|
EMPTY_PATH=
|
||||||
|
|
||||||
|
NEW_PATH=`nvm_prepend_path "$EMPTY_PATH" "$NVM_DIR/v0.2.5/bin"`
|
||||||
|
|
||||||
|
[ "$NEW_PATH" = "$NVM_DIR/v0.2.5/bin" ] || die "Not correctly prepended: $STRIPPED_PATH "
|
||||||
11
test/fast/Unit tests/nvm_strip_path
Executable file
11
test/fast/Unit tests/nvm_strip_path
Executable file
@@ -0,0 +1,11 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
TEST_PATH=$NVM_DIR/v0.10.5/bin:/usr/bin:$NVM_DIR/v0.11.5/bin:$NVM_DIR/v0.9.5/bin:/usr/local/bin:$NVM_DIR/v0.2.5/bin
|
||||||
|
|
||||||
|
STRIPPED_PATH=`nvm_strip_path "$TEST_PATH" "/bin"`
|
||||||
|
|
||||||
|
[ "$STRIPPED_PATH" = "/usr/bin:/usr/local/bin" ] || die "Not correctly stripped: $STRIPPED_PATH "
|
||||||
24
test/slow/nvm install/install already installed uses it
Executable file
24
test/slow/nvm install/install already installed uses it
Executable file
@@ -0,0 +1,24 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
[ "$(nvm install invalid.invalid)" = "Version 'invalid.invalid' not found - try \`nvm ls-remote\` to browse available versions." ] || die "nvm installing an invalid version did not print a nice error message"
|
||||||
|
|
||||||
|
# Remove the stuff we're clobbering.
|
||||||
|
[ -e ../../../v0.9.7 ] && rm -R ../../../v0.9.7
|
||||||
|
[ -e ../../../v0.9.12 ] && rm -R ../../../v0.9.12
|
||||||
|
|
||||||
|
# Install from binary
|
||||||
|
nvm install 0.9.7
|
||||||
|
nvm install 0.9.12
|
||||||
|
|
||||||
|
nvm use 0.9.7
|
||||||
|
|
||||||
|
node --version | grep v0.9.7 || die "precondition failed: node doesn't start at 0.9.7"
|
||||||
|
|
||||||
|
nvm install 0.9.12
|
||||||
|
|
||||||
|
node --version | grep v0.9.12 || die "nvm install on already installed version doesn't use it"
|
||||||
|
|
||||||
Reference in New Issue
Block a user