mirror of
https://github.com/nvm-sh/nvm.git
synced 2025-09-15 03:49:07 +00:00
Compare commits
57 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
1da31aa425 | ||
![]() |
519a9481e6 | ||
![]() |
b16bf303ca | ||
![]() |
9a28706688 | ||
![]() |
a318ddf9b3 | ||
![]() |
8dbbc32905 | ||
![]() |
de03007348 | ||
![]() |
1b22c2e2b1 | ||
![]() |
0e1f2408c9 | ||
![]() |
931cc45fc3 | ||
![]() |
085e314a3f | ||
![]() |
6aa45732d8 | ||
![]() |
16c0be8314 | ||
![]() |
578a601b27 | ||
![]() |
896aa7c436 | ||
![]() |
2441b00262 | ||
![]() |
88595f09aa | ||
![]() |
5925bd5e37 | ||
![]() |
24e22dd8bc | ||
![]() |
61de5f9ca3 | ||
![]() |
4de9eff55c | ||
![]() |
7e20a77c89 | ||
![]() |
8fbbeb8fc5 | ||
![]() |
79203ba5d0 | ||
![]() |
2e3e48cc06 | ||
![]() |
db8acf11fd | ||
![]() |
a6be718387 | ||
![]() |
e2c4c88136 | ||
![]() |
4cd0b078d0 | ||
![]() |
f6ba08253b | ||
![]() |
0ecb2879b9 | ||
![]() |
e3b84499c2 | ||
![]() |
b313f62749 | ||
![]() |
7f3a794d89 | ||
![]() |
ba1be9b4ea | ||
![]() |
652a9ef9b5 | ||
![]() |
0d81a219ae | ||
![]() |
d6e457354f | ||
![]() |
6668dc5c47 | ||
![]() |
3d9c1d7852 | ||
![]() |
29f582611b | ||
![]() |
673cda56c4 | ||
![]() |
e562a5645b | ||
![]() |
c0c5e8d7ef | ||
![]() |
f00d688c87 | ||
![]() |
5aa78f21cf | ||
![]() |
4a7275a0c6 | ||
![]() |
c77be55cdc | ||
![]() |
e195fccdb7 | ||
![]() |
87516039a8 | ||
![]() |
80e349edb1 | ||
![]() |
038c1f3d0f | ||
![]() |
66455f7c77 | ||
![]() |
a69eae10e3 | ||
![]() |
13b87449e8 | ||
![]() |
703acb0514 | ||
![]() |
744507b83e |
12
.travis.yml
12
.travis.yml
@@ -2,7 +2,13 @@ language: c # defaults to ruby
|
|||||||
install:
|
install:
|
||||||
- sudo apt-get install ksh zsh -y
|
- sudo apt-get install ksh zsh -y
|
||||||
before_script:
|
before_script:
|
||||||
- curl -o /tmp/urchin https://raw.github.com/scraperwiki/urchin/master/urchin && chmod +x /tmp/urchin
|
- curl -o /tmp/urchin https://raw.githubusercontent.com/scraperwiki/urchin/master/urchin && chmod +x /tmp/urchin
|
||||||
script:
|
script:
|
||||||
- NVM_DIR=$TRAVIS_BUILD_DIR make URCHIN=/tmp/urchin test
|
- NVM_DIR=$TRAVIS_BUILD_DIR make TEST_SUITE=$TEST_SUITE URCHIN=/tmp/urchin $SHELL
|
||||||
|
env:
|
||||||
|
- SHELL=sh TEST_SUITE=fast
|
||||||
|
- SHELL=dash TEST_SUITE=fast
|
||||||
|
- SHELL=bash TEST_SUITE=fast
|
||||||
|
- SHELL=zsh TEST_SUITE=fast
|
||||||
|
- SHELL=ksh TEST_SUITE=fast
|
||||||
|
- SHELL=sh TEST_SUITE=slow
|
||||||
|
@@ -5,7 +5,7 @@ We love pull requests, they're our favorite.
|
|||||||
However, before submitting, please review the following:
|
However, before submitting, please review the following:
|
||||||
|
|
||||||
- Please include tests. Changes with tests will be merged very quickly.
|
- Please include tests. Changes with tests will be merged very quickly.
|
||||||
- Please manually confirm that your changes, and all tests, pass in `bash`, `sh`, and `zsh`. We hope to soon automatically run all these tests, but in the meantime, we have to rely on each contributor doing so.
|
- Please manually confirm that your changes work in `bash`, `sh`/`dash`, `ksh`, and `zsh`. Fast tests do run in these shells, but it's nice to manually verify also.
|
||||||
- Please maintain consistent whitespace - 2-space indentation, trailing newlines in all files, etc.
|
- Please maintain consistent whitespace - 2-space indentation, trailing newlines in all files, etc.
|
||||||
- Any time you make a change to your PR, please rebase freshly on top of master. Nobody likes merge commits.
|
- Any time you make a change to your PR, please rebase freshly on top of master. Nobody likes merge commits.
|
||||||
|
|
||||||
|
7
Makefile
7
Makefile
@@ -1,15 +1,14 @@
|
|||||||
URCHIN=`which urchin`
|
URCHIN=`which urchin`
|
||||||
SHELLS=sh bash dash ksh zsh
|
SHELLS=sh bash dash ksh zsh
|
||||||
|
TEST_SUITE=fast
|
||||||
|
|
||||||
.PHONY: $(SHELLS) test
|
.PHONY: $(SHELLS) test
|
||||||
|
|
||||||
fast: $(SHELLS)
|
|
||||||
|
|
||||||
$(SHELLS):
|
$(SHELLS):
|
||||||
@printf '\n\033[0;34m%s\033[0m\n' "Running tests in $@"
|
@printf '\n\033[0;34m%s\033[0m\n' "Running tests in $@"
|
||||||
@$@ $(URCHIN) -f test/fast
|
@$@ $(URCHIN) -f test/$(TEST_SUITE)
|
||||||
|
|
||||||
test: fast
|
test: $(SHELLS)
|
||||||
@$(URCHIN) -f test/slow
|
@$(URCHIN) -f test/slow
|
||||||
|
|
||||||
default: test
|
default: test
|
||||||
|
@@ -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.github.com/creationix/nvm/v0.5.1/install.sh | sh
|
curl https://raw.githubusercontent.com/creationix/nvm/v0.8.0/install.sh | sh
|
||||||
|
|
||||||
or Wget:
|
or Wget:
|
||||||
|
|
||||||
wget -qO- https://raw.github.com/creationix/nvm/v0.5.1/install.sh | sh
|
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.8.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>
|
||||||
|
|
||||||
@@ -37,6 +37,9 @@ Often I also put in a line to use a specific version of node.
|
|||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
|
You can create an `.nvmrc` file containing version number in the project root directory (or any parent directory).
|
||||||
|
`nvm use`, `nvm install`, and `nvm run` will all respect an `.nvmrc` file.
|
||||||
|
|
||||||
To download, compile, and install the latest v0.10.x release of node, do this:
|
To download, compile, and install the latest v0.10.x release of node, do this:
|
||||||
|
|
||||||
nvm install 0.10
|
nvm install 0.10
|
||||||
@@ -45,13 +48,9 @@ And then in any new shell just use the installed version:
|
|||||||
|
|
||||||
nvm use 0.10
|
nvm use 0.10
|
||||||
|
|
||||||
You can create an `.nvmrc` file containing version number in the project root folder; run the following command to switch versions:
|
|
||||||
|
|
||||||
nvm use
|
|
||||||
|
|
||||||
Or you can just run it:
|
Or you can just run it:
|
||||||
|
|
||||||
nvm run 0.10
|
nvm run 0.10 --version
|
||||||
|
|
||||||
If you want to see what versions are installed:
|
If you want to see what versions are installed:
|
||||||
|
|
||||||
@@ -133,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
|
||||||
|
|
||||||
@@ -164,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.5.1/install.sh
|
[2]: https://github.com/creationix/nvm/blob/v0.8.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
|
||||||
|
|
||||||
|
12
install.sh
12
install.sh
@@ -45,7 +45,7 @@ install_from_git() {
|
|||||||
|
|
||||||
install_as_script() {
|
install_as_script() {
|
||||||
if [ -z "$NVM_SOURCE" ]; then
|
if [ -z "$NVM_SOURCE" ]; then
|
||||||
NVM_SOURCE="https://raw.github.com/creationix/nvm/master/nvm.sh"
|
NVM_SOURCE="https://raw.githubusercontent.com/creationix/nvm/master/nvm.sh"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Downloading to $NVM_DIR
|
# Downloading to $NVM_DIR
|
||||||
@@ -101,7 +101,7 @@ if [ -z "$PROFILE" ]; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
SOURCE_STR="[ -s \"$NVM_DIR/nvm.sh\" ] && . \"$NVM_DIR/nvm.sh\" # This loads nvm"
|
SOURCE_STR="\nexport NVM_DIR=\"$NVM_DIR\"\n[ -s \"\$NVM_DIR/nvm.sh\" ] && . \"\$NVM_DIR/nvm.sh\" # This loads nvm"
|
||||||
|
|
||||||
if [ -z "$PROFILE" ] || [ ! -f "$PROFILE" ] ; then
|
if [ -z "$PROFILE" ] || [ ! -f "$PROFILE" ] ; then
|
||||||
if [ -z $PROFILE ]; then
|
if [ -z $PROFILE ]; then
|
||||||
@@ -112,15 +112,13 @@ if [ -z "$PROFILE" ] || [ ! -f "$PROFILE" ] ; then
|
|||||||
echo "=> Create it (touch $PROFILE) and run this script again"
|
echo "=> Create it (touch $PROFILE) and run this script again"
|
||||||
fi
|
fi
|
||||||
echo " OR"
|
echo " OR"
|
||||||
echo "=> Append the following line to the correct file yourself:"
|
echo "=> Append the following lines to the correct file yourself:"
|
||||||
echo
|
echo -e "$SOURCE_STR"
|
||||||
echo " $SOURCE_STR"
|
|
||||||
echo
|
echo
|
||||||
else
|
else
|
||||||
if ! grep -qc 'nvm.sh' $PROFILE; then
|
if ! grep -qc 'nvm.sh' $PROFILE; then
|
||||||
echo "=> Appending source string to $PROFILE"
|
echo "=> Appending source string to $PROFILE"
|
||||||
echo "" >> "$PROFILE"
|
echo -e "$SOURCE_STR" >> "$PROFILE"
|
||||||
echo $SOURCE_STR >> "$PROFILE"
|
|
||||||
else
|
else
|
||||||
echo "=> Source string already in $PROFILE"
|
echo "=> Source string already in $PROFILE"
|
||||||
fi
|
fi
|
||||||
|
4
nvm-exec
4
nvm-exec
@@ -5,9 +5,9 @@ DIR="$(command cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|||||||
source "$DIR/nvm.sh"
|
source "$DIR/nvm.sh"
|
||||||
|
|
||||||
if [ -n "$NODE_VERSION" ]; then
|
if [ -n "$NODE_VERSION" ]; then
|
||||||
nvm use $NODE_VERSION || (echo "NODE_VERSION not set" && exit 127)
|
nvm use $NODE_VERSION > /dev/null || (echo "NODE_VERSION not set" >&2 && exit 127)
|
||||||
else
|
else
|
||||||
nvm use || (echo "No .nvmrc file found" && exit 127)
|
nvm use > /dev/null || (echo "No .nvmrc file found" >&2 && exit 127)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exec $@
|
exec $@
|
||||||
|
126
nvm.sh
126
nvm.sh
@@ -34,11 +34,30 @@ if [ -z "$NVM_NODEJS_ORG_MIRROR" ]; then
|
|||||||
export NVM_NODEJS_ORG_MIRROR="http://nodejs.org/dist"
|
export NVM_NODEJS_ORG_MIRROR="http://nodejs.org/dist"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Traverse up in directory tree to find containing folder
|
||||||
|
nvm_find_up() {
|
||||||
|
local path
|
||||||
|
path=$PWD
|
||||||
|
while [ "$path" != "" ] && [ ! -f "$path/$1" ]; do
|
||||||
|
path=${path%/*}
|
||||||
|
done
|
||||||
|
echo "$path"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
nvm_find_nvmrc() {
|
||||||
|
local dir="$(nvm_find_up '.nvmrc')"
|
||||||
|
if [ -e "$dir/.nvmrc" ]; then
|
||||||
|
echo "$dir/.nvmrc"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# Obtain nvm version from rc file
|
# Obtain nvm version from rc file
|
||||||
nvm_rc_version() {
|
nvm_rc_version() {
|
||||||
if [ -e .nvmrc ]; then
|
local NVMRC_PATH="$(nvm_find_nvmrc)"
|
||||||
NVM_RC_VERSION=`cat .nvmrc | head -n 1`
|
if [ -e "$NVMRC_PATH" ]; then
|
||||||
echo "Found .nvmrc files with version <$NVM_RC_VERSION>"
|
NVM_RC_VERSION=`cat "$NVMRC_PATH" | head -n 1`
|
||||||
|
echo "Found '$NVMRC_PATH' with version <$NVM_RC_VERSION>"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -78,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"
|
||||||
@@ -99,10 +130,12 @@ nvm_ls() {
|
|||||||
fi
|
fi
|
||||||
# If it looks like an explicit version, don't do anything funny
|
# If it looks like an explicit version, don't do anything funny
|
||||||
if [ `expr "$PATTERN" : "v[[:digit:]]*\.[[:digit:]]*\.[[:digit:]]*$"` != 0 ]; then
|
if [ `expr "$PATTERN" : "v[[:digit:]]*\.[[:digit:]]*\.[[:digit:]]*$"` != 0 ]; then
|
||||||
|
if [ -d "$NVM_DIR/$PATTERN" ]; then
|
||||||
VERSIONS="$PATTERN"
|
VERSIONS="$PATTERN"
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
VERSIONS=`find "$NVM_DIR/" -maxdepth 1 -type d -name "$(nvm_format_version $PATTERN)*" -exec basename '{}' ';' \
|
VERSIONS=`find "$NVM_DIR/" -maxdepth 1 -type d -name "$(nvm_format_version $PATTERN)*" -exec basename '{}' ';' \
|
||||||
| sort -t. -u -k 1.2,1n -k 2,2n -k 3,3n`
|
| sort -t. -u -k 1.2,1n -k 2,2n -k 3,3n | grep -v '^ *\.'`
|
||||||
fi
|
fi
|
||||||
if [ -z "$VERSIONS" ]; then
|
if [ -z "$VERSIONS" ]; then
|
||||||
echo "N/A"
|
echo "N/A"
|
||||||
@@ -148,7 +181,7 @@ nvm_checksum() {
|
|||||||
echo 'Checksums empty' #missing in raspberry pi binary
|
echo 'Checksums empty' #missing in raspberry pi binary
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
echo 'Checksums do not match.'
|
echo 'Checksums do not match.' >&2
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -218,6 +251,7 @@ nvm() {
|
|||||||
echo " nvm alias <name> <version> Set an alias named <name> pointing to <version>"
|
echo " nvm alias <name> <version> Set an alias named <name> pointing to <version>"
|
||||||
echo " nvm unalias <name> Deletes the alias named <name>"
|
echo " nvm unalias <name> Deletes the alias named <name>"
|
||||||
echo " nvm copy-packages <version> Install global NPM packages contained in <version> to current version"
|
echo " nvm copy-packages <version> Install global NPM packages contained in <version> to current version"
|
||||||
|
echo " nvm unload Unload NVM from shell"
|
||||||
echo
|
echo
|
||||||
echo "Example:"
|
echo "Example:"
|
||||||
echo " nvm install v0.10.24 Install a specific version number"
|
echo " nvm install v0.10.24 Install a specific version number"
|
||||||
@@ -274,7 +308,7 @@ nvm() {
|
|||||||
fi
|
fi
|
||||||
provided_version="$NVM_RC_VERSION"
|
provided_version="$NVM_RC_VERSION"
|
||||||
fi
|
fi
|
||||||
[ -d "$NVM_DIR/$provided_version" ] && echo "$provided_version is already installed." && return
|
[ -d "$NVM_DIR/$provided_version" ] && echo "$provided_version is already installed." >&2 && return
|
||||||
|
|
||||||
VERSION=`nvm_remote_version $provided_version`
|
VERSION=`nvm_remote_version $provided_version`
|
||||||
ADDITIONAL_PARAMETERS=''
|
ADDITIONAL_PARAMETERS=''
|
||||||
@@ -287,7 +321,16 @@ 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." >&2
|
||||||
|
nvm use "$VERSION"
|
||||||
|
return $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$VERSION" = "N/A" ]; then
|
||||||
|
echo "Version '$provided_version' not found - try \`nvm ls-remote\` to browse available versions." >&2
|
||||||
|
return 3
|
||||||
|
fi
|
||||||
|
|
||||||
# skip binary install if no binary option specified.
|
# skip binary install if no binary option specified.
|
||||||
if [ $nobinary -ne 1 ]; then
|
if [ $nobinary -ne 1 ]; then
|
||||||
@@ -352,10 +395,10 @@ nvm() {
|
|||||||
if ! nvm_has "npm" ; then
|
if ! nvm_has "npm" ; then
|
||||||
echo "Installing npm..."
|
echo "Installing npm..."
|
||||||
if [ "`expr "$VERSION" : '\(^v0\.1\.\)'`" != '' ]; then
|
if [ "`expr "$VERSION" : '\(^v0\.1\.\)'`" != '' ]; then
|
||||||
echo "npm requires node v0.2.3 or higher"
|
echo "npm requires node v0.2.3 or higher" >&2
|
||||||
elif [ "`expr "$VERSION" : '\(^v0\.2\.\)'`" != '' ]; then
|
elif [ "`expr "$VERSION" : '\(^v0\.2\.\)'`" != '' ]; then
|
||||||
if [ "`expr "$VERSION" : '\(^v0\.2\.[0-2]$\)'`" != '' ]; then
|
if [ "`expr "$VERSION" : '\(^v0\.2\.[0-2]$\)'`" != '' ]; then
|
||||||
echo "npm requires node v0.2.3 or higher"
|
echo "npm requires node v0.2.3 or higher" >&2
|
||||||
else
|
else
|
||||||
curl https://npmjs.org/install.sh | clean=yes npm_install=0.2.19 sh
|
curl https://npmjs.org/install.sh | clean=yes npm_install=0.2.19 sh
|
||||||
fi
|
fi
|
||||||
@@ -364,7 +407,7 @@ nvm() {
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "nvm: install $VERSION failed!"
|
echo "nvm: install $VERSION failed!" >&2
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
@@ -372,12 +415,12 @@ nvm() {
|
|||||||
[ $# -ne 2 ] && nvm help && return
|
[ $# -ne 2 ] && nvm help && return
|
||||||
PATTERN=`nvm_format_version $2`
|
PATTERN=`nvm_format_version $2`
|
||||||
if [ "$PATTERN" = `nvm_version` ]; then
|
if [ "$PATTERN" = `nvm_version` ]; then
|
||||||
echo "nvm: Cannot uninstall currently-active node version, $PATTERN."
|
echo "nvm: Cannot uninstall currently-active node version, $PATTERN." >&2
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
VERSION=`nvm_version $PATTERN`
|
VERSION=`nvm_version $PATTERN`
|
||||||
if [ ! -d $NVM_DIR/$VERSION ]; then
|
if [ ! -d $NVM_DIR/$VERSION ]; then
|
||||||
echo "$VERSION version is not installed..."
|
echo "$VERSION version is not installed..." >&2
|
||||||
return;
|
return;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -400,23 +443,23 @@ 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" >&2
|
||||||
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" >&2
|
||||||
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" >&2
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
"use" )
|
"use" )
|
||||||
@@ -440,28 +483,24 @@ nvm() {
|
|||||||
VERSION=`nvm_version $2`
|
VERSION=`nvm_version $2`
|
||||||
fi
|
fi
|
||||||
if [ ! -d "$NVM_DIR/$VERSION" ]; then
|
if [ ! -d "$NVM_DIR/$VERSION" ]; then
|
||||||
echo "$VERSION version is not installed yet"
|
echo "$VERSION version is not installed yet" >&2
|
||||||
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
|
||||||
@@ -503,14 +542,11 @@ nvm() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -d "$NVM_DIR/$VERSION" ]; then
|
if [ ! -d "$NVM_DIR/$VERSION" ]; then
|
||||||
echo "$VERSION version is not installed yet"
|
echo "$VERSION version is not installed yet" >&2
|
||||||
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 "$@"
|
||||||
;;
|
;;
|
||||||
@@ -565,7 +601,7 @@ nvm() {
|
|||||||
"unalias" )
|
"unalias" )
|
||||||
mkdir -p $NVM_DIR/alias
|
mkdir -p $NVM_DIR/alias
|
||||||
[ $# -ne 2 ] && nvm help && return 127
|
[ $# -ne 2 ] && nvm help && return 127
|
||||||
[ ! -f "$NVM_DIR/alias/$2" ] && echo "Alias $2 doesn't exist!" && return
|
[ ! -f "$NVM_DIR/alias/$2" ] && echo "Alias $2 doesn't exist!" >&2 && return
|
||||||
rm -f $NVM_DIR/alias/$2
|
rm -f $NVM_DIR/alias/$2
|
||||||
echo "Deleted alias $2"
|
echo "Deleted alias $2"
|
||||||
;;
|
;;
|
||||||
@@ -592,7 +628,11 @@ nvm() {
|
|||||||
nvm_version $2
|
nvm_version $2
|
||||||
;;
|
;;
|
||||||
"--version" )
|
"--version" )
|
||||||
echo "nvm v0.5.1"
|
echo "0.8.0"
|
||||||
|
;;
|
||||||
|
"unload" )
|
||||||
|
unset -f nvm nvm_print_versions nvm_checksum nvm_ls_remote nvm_ls nvm_remote_version nvm_version nvm_rc_version > /dev/null 2>&1
|
||||||
|
unset RC_VERSION NVM_NODEJS_ORG_MIRROR NVM_DIR NVM_CD_FLAGS > /dev/null 2>&1
|
||||||
;;
|
;;
|
||||||
* )
|
* )
|
||||||
nvm help
|
nvm help
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "nvm",
|
"name": "nvm",
|
||||||
"version": "0.5.1",
|
"version": "0.8.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"
|
||||||
|
9
test/fast/Listing versions/Running "nvm ls" should filter out ".nvm"
Executable file
9
test/fast/Listing versions/Running "nvm ls" should filter out ".nvm"
Executable file
@@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
mkdir ../../../v0.1.3
|
||||||
|
mkdir ../../../v0.2.3
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
[ -z `nvm ls | grep '^ *\.'` ]
|
||||||
|
# The result should contain only the appropriate version numbers.
|
@@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
mkdir ../../../v0.1.2
|
||||||
|
|
||||||
|
. ../../../nvm.sh
|
||||||
|
|
||||||
|
nvm ls v0.1 | grep v0.1.2 &&
|
||||||
|
nvm ls v0.1.2 | grep v0.1.2 &&
|
||||||
|
nvm ls v0.1. | grep N/A &&
|
||||||
|
nvm ls v0.1.1 | grep N/A
|
@@ -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 2>&1)" = "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"
|
||||||
|
|
12
test/fast/Running "nvm unload" should unset all function and variables.
Executable file
12
test/fast/Running "nvm unload" should unset all function and variables.
Executable file
@@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
fail () { echo $@ ; exit 1; }
|
||||||
|
|
||||||
|
. ../../nvm.sh
|
||||||
|
|
||||||
|
type nvm > /dev/null 2>&1 || fail "NVM not loaded"
|
||||||
|
|
||||||
|
nvm unload
|
||||||
|
|
||||||
|
type nvm > /dev/null 2>&1 && fail "NVM not unloaded" || exit 0
|
||||||
|
|
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: $NEW_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: $NEW_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 2>&1)" = "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"
|
||||||
|
|
@@ -6,7 +6,8 @@ die () { echo $@ ; exit 1; }
|
|||||||
. ../../../nvm.sh
|
. ../../../nvm.sh
|
||||||
|
|
||||||
echo "0.10.7" > .nvmrc
|
echo "0.10.7" > .nvmrc
|
||||||
[ "$(nvm run --version | tail -1)" = "v0.10.7" ] || die "`nvm run` failed to run with the .nvmrc version"
|
|
||||||
|
|
||||||
[ "$(nvm run --version | head -1)" = "Found .nvmrc files with version <0.10.7>" ] || die "`nvm run` failed to print out the \"found in .nvmrc\" message"
|
[ "$(nvm run --version | tail -1)" = "v0.10.7" ] || die "\`nvm run\` failed to run with the .nvmrc version"
|
||||||
|
|
||||||
|
[ "$(nvm run --version | head -1)" = "Found '$PWD/.nvmrc' with version <0.10.7>" ] || die "\`nvm run\` failed to print out the \"found in .nvmrc\" message"
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user