mirror of
				https://github.com/nvm-sh/nvm.git
				synced 2025-10-31 10:15:53 +08:00 
			
		
		
		
	Merge curl/wget and version changes
This commit is contained in:
		
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1,3 +1,4 @@ | ||||
| HEAD | ||||
| src | ||||
| v* | ||||
| alias | ||||
|   | ||||
| @@ -1,2 +1,3 @@ | ||||
| src | ||||
| v* | ||||
| alias | ||||
|   | ||||
| @@ -27,7 +27,7 @@ And then in any new shell just use the installed version: | ||||
|  | ||||
|     nvm use v0.2.5 | ||||
|  | ||||
| If you want to see what versions you have installed issue: | ||||
| If you want to see what versions are available: | ||||
|  | ||||
|     nvm ls | ||||
|  | ||||
| @@ -35,3 +35,7 @@ To restore your PATH, you can deactivate it. | ||||
|  | ||||
|     nvm deactivate | ||||
|  | ||||
| To set a default Node version to be used in any new shell, use the alias 'default': | ||||
|  | ||||
|     nvm alias default v0.2.5 | ||||
|  | ||||
|   | ||||
							
								
								
									
										162
									
								
								nvm.sh
									
									
									
									
									
								
							
							
						
						
									
										162
									
								
								nvm.sh
									
									
									
									
									
								
							| @@ -26,6 +26,46 @@ if [ ! `which curl` ]; then | ||||
|     fi | ||||
| fi | ||||
|  | ||||
| # Expand a version using the version cache | ||||
| nvm_version() | ||||
| { | ||||
|     PATTERN=$1 | ||||
|     VERSION='' | ||||
|     if [ -f "$NVM_DIR/alias/$PATTERN" ]; then | ||||
|         nvm_version `cat $NVM_DIR/alias/$PATTERN` | ||||
|         return | ||||
|     fi | ||||
|     # If it looks like an explicit version, don't do anything funny | ||||
|     if [[ "$PATTERN" == v*.*.* ]]; then | ||||
|         VERSION="$PATTERN" | ||||
|     fi | ||||
|     # The default version is the current one | ||||
|     if [ ! "$PATTERN" -o "$PATTERN" = 'current' ]; then | ||||
|         VERSION=`node -v 2>/dev/null` | ||||
|     fi | ||||
|     if [ "$PATTERN" = 'stable' ]; then | ||||
|         PATTERN='*.*[02468].' | ||||
|     fi | ||||
|     if [ "$PATTERN" = 'latest' ]; then | ||||
|         PATTERN='*.*.' | ||||
|     fi | ||||
|     if [ "$PATTERN" = 'all' ]; then | ||||
|         (cd $NVM_DIR; ls -dG v* 2>/dev/null || echo "N/A") | ||||
|         return | ||||
|     fi | ||||
|     if [ ! "$VERSION" ]; then | ||||
|         VERSION=`(cd $NVM_DIR; ls -d v${PATTERN}* 2>/dev/null) | sort -t. -k 2,1n -k 2,2n -k 3,3n | tail -n1` | ||||
|     fi | ||||
|     if [ ! "$VERSION" ]; then | ||||
|         echo "N/A" | ||||
|         return -1 | ||||
|     elif [ -e "$NVM_DIR/$VERSION" ]; then | ||||
|         (cd $NVM_DIR; ls -dG "$VERSION") | ||||
|     else | ||||
|         echo "$VERSION" | ||||
|     fi | ||||
| } | ||||
|  | ||||
| nvm() | ||||
| { | ||||
|   if [ $# -lt 1 ]; then | ||||
| @@ -38,15 +78,22 @@ nvm() | ||||
|       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 "    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 (installed versions are blue)" | ||||
|       echo "    nvm ls <version>            List versions matching a given description" | ||||
|       echo "    nvm deactivate              Undo effects of NVM on current shell" | ||||
|       echo "    nvm sync                    Update the local cache of available versions" | ||||
|       echo "    nvm alias [<pattern>]       Show all aliases beginning with <pattern>" | ||||
|       echo "    nvm alias <name> <version>  Set an alias named <name> pointing to <version>" | ||||
|       echo | ||||
|       echo "Example:" | ||||
|       echo "    nvm install v0.2.5" | ||||
|       echo "    nvm use v0.2.5" | ||||
|       echo "    nvm install v0.2.5          Install a specific version number" | ||||
|       echo "    nvm use stable              Use the stable release" | ||||
|       echo "    nvm install latest          Install the latest, possibly unstable version" | ||||
|       echo "    nvm use 0.3                 Use the latest available 0.3.x release" | ||||
|       echo "    nvm alias default v0.3.6    Set v0.3.6 as the default"  | ||||
|       echo | ||||
|     ;; | ||||
|     "install" ) | ||||
| @@ -55,16 +102,18 @@ nvm() | ||||
|         return; | ||||
|       fi | ||||
|       [ "$NOCURL" ] && curl && return | ||||
|       VERSION=`nvm_version $2` | ||||
|       START=`pwd` | ||||
|       mkdir -p "$NVM_DIR/src" && \ | ||||
|       cd "$NVM_DIR/src" && \ | ||||
|       curl -C - -# "http://nodejs.org/dist/node-$2.tar.gz" -o "node-$2.tar.gz" && \ | ||||
|       tar -xzf "node-$2.tar.gz" && \ | ||||
|       cd "node-$2" && \ | ||||
|       ./configure --prefix="$NVM_DIR/$2" && \ | ||||
|       curl -C - -# "http://nodejs.org/dist/node-$VERSION.tar.gz" -o "node-$VERSION.tar.gz" && \ | ||||
|       tar -xzf "node-$VERSION.tar.gz" && \ | ||||
|       cd "node-$VERSION" && \ | ||||
|       ./configure --prefix="$NVM_DIR/$VERSION" && \ | ||||
|       make && \ | ||||
|       rm -f "$NVM_DIR/$VERSION" && \ | ||||
|       make install && \ | ||||
|       nvm use $2 | ||||
|       nvm use $VERSION | ||||
|       if ! which npm ; then | ||||
|         echo "Installing npm..." | ||||
|         curl -# http://npmjs.org/install.sh -o - | sh | ||||
| @@ -90,41 +139,96 @@ nvm() | ||||
|         nvm help | ||||
|         return | ||||
|       fi | ||||
|       if [ ! -d $NVM_DIR/$2 ]; then | ||||
|         echo "$2 version is not installed yet" | ||||
|       VERSION=`nvm_version $2` | ||||
|       if [ ! -d $NVM_DIR/$VERSION ]; then | ||||
|         echo "$VERSION 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} | ||||
|         PATH=${PATH%$NVM_DIR/*/bin*}$NVM_DIR/$VERSION/bin${PATH#*$NVM_DIR/*/bin} | ||||
|       else | ||||
|         PATH="$NVM_DIR/$2/bin:$PATH" | ||||
|         PATH="$NVM_DIR/$VERSION/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} | ||||
|         MANPATH=${MANPATH%$NVM_DIR/*/share/man*}$NVM_DIR/$VERSION/share/man${MANPATH#*$NVM_DIR/*/share/man} | ||||
|       else | ||||
|         MANPATH="$NVM_DIR/$2/share/man:$MANPATH" | ||||
|         MANPATH="$NVM_DIR/$VERSION/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" | ||||
|       export NVM_PATH="$NVM_DIR/$VERSION/lib/node" | ||||
|       export NVM_BIN="$NVM_DIR/$VERSION/bin" | ||||
|       echo "Now using node $VERSION" | ||||
|     ;; | ||||
|     "ls" ) | ||||
|       if [ $# -ne 1 ]; then | ||||
|         nvm help | ||||
|         return; | ||||
|         nvm_version $2 | ||||
|         return | ||||
|       fi | ||||
|       for f in $NVM_DIR/v*; do | ||||
|         if [[ $PATH == *$f/bin* ]]; then | ||||
|           echo "v${f##*v} *" | ||||
|         else | ||||
|           echo "v${f##*v}" | ||||
|         fi | ||||
|       nvm_version all | ||||
|       for P in {stable,latest,current}; do | ||||
|           echo -ne "$P: \t"; nvm_version $P | ||||
|       done | ||||
|       nvm alias | ||||
|       echo "# use 'nvm sync' to update from nodejs.org" | ||||
|     ;; | ||||
|     "alias" ) | ||||
|       if [ $# -le 2 ]; then | ||||
|         (cd $NVM_DIR/alias; for ALIAS in `ls $2* 2>/dev/null`; do | ||||
|             DEST=`cat $ALIAS` | ||||
|             VERSION=`nvm_version $DEST` | ||||
|             if [ "$DEST" = "$VERSION" ]; then | ||||
|                 echo "$ALIAS -> $DEST" | ||||
|             else | ||||
|                 echo "$ALIAS -> $DEST (-> $VERSION)" | ||||
|             fi | ||||
|         done) | ||||
|         return | ||||
|       fi | ||||
|       if [ ! "$3" ]; then | ||||
|           rm -f $NVM_DIR/alias/$2 | ||||
|           echo "$2 -> *poof*" | ||||
|           return | ||||
|       fi | ||||
|       mkdir -p $NVM_DIR/alias | ||||
|       VERSION=`nvm_version $3` | ||||
|       if [ $? -ne 0 ]; then | ||||
|         echo "! WARNING: Version '$3' does not exist." >&2  | ||||
|       fi | ||||
|       echo $3 > "$NVM_DIR/alias/$2" | ||||
|       if [ ! "$3" = "$VERSION" ]; then | ||||
|           echo "$2 -> $3 (-> $VERSION)" | ||||
|           echo "! WARNING: Moving target. Aliases to implicit versions may change without warning." | ||||
|       else | ||||
|         echo "$2 -> $3" | ||||
|       fi | ||||
|     ;; | ||||
|     "sync" ) | ||||
|         [ "$NOCURL" ] && curl && return | ||||
|         LATEST=`nvm_version latest` | ||||
|         STABLE=`nvm_version stable` | ||||
|         (cd $NVM_DIR | ||||
|         rm -f v* 2>/dev/null | ||||
|         echo -n "# syncing with nodejs.org..." | ||||
|         for VER in `curl -s http://nodejs.org/dist/ -o - | grep 'node-v.*\.tar\.gz' | sed -e 's/.*node-//' -e 's/\.tar\.gz.*//'`; do | ||||
|             touch $VER | ||||
|         done | ||||
|         echo " done." | ||||
|         ) | ||||
|         [ "$STABLE" = `nvm_version stable` ] || echo "NEW stable: `nvm_version stable`" | ||||
|         [ "$LATEST" = `nvm_version latest` ] || echo "NEW latest: `nvm_version latest`" | ||||
|     ;; | ||||
|     "clear-cache" ) | ||||
|         rm -f $NVM_DIR/v* | ||||
|         echo "Cache cleared." | ||||
|     ;; | ||||
|     "version" ) | ||||
|         nvm_version $2 | ||||
|     ;; | ||||
|     * ) | ||||
|       nvm help | ||||
|     ;; | ||||
|   esac | ||||
| } | ||||
|  | ||||
| nvm ls default >/dev/null 2>&1 && nvm use default >/dev/null | ||||
|   | ||||
		Reference in New Issue
	
	Block a user