mirror of
				https://github.com/nvm-sh/nvm.git
				synced 2025-10-31 18:25:52 +08:00 
			
		
		
		
	[New] Add lts/foo support to remote commands.
				
					
				
			- `nvm ls-remote` - `nvm version-remote` - `nvm install` - `nvm uninstall` Document existing support: - `nvm use` - `nvm exec` - `nvm run` Fixes #1208.
This commit is contained in:
		| @@ -160,13 +160,13 @@ In place of a version pointer like "0.10" or "5.0" or "4.2.1", you can use the f | |||||||
|  |  | ||||||
| ### Long-term support | ### Long-term support | ||||||
| Node has a [schedule](https://github.com/nodejs/LTS#lts_schedule) for long-term support (LTS) You can reference LTS versions in aliases and `.nvmrc` files with the notation `lts/*` for the latest LTS, and `lts/argon` for LTS releases from the "argon" line, for example. In addition, the following commands support LTS arguments: | Node has a [schedule](https://github.com/nodejs/LTS#lts_schedule) for long-term support (LTS) You can reference LTS versions in aliases and `.nvmrc` files with the notation `lts/*` for the latest LTS, and `lts/argon` for LTS releases from the "argon" line, for example. In addition, the following commands support LTS arguments: | ||||||
|  - `nvm install --lts` / `nvm install --lts=argon` |  - `nvm install --lts` / `nvm install --lts=argon` / `nvm install 'lts/*'` / `nvm install lts/argon` | ||||||
|  - `nvm uninstall --lts` / `nvm uninstall --lts=argon` |  - `nvm uninstall --lts` / `nvm uninstall --lts=argon` / `nvm uninstall 'lts/*'` / `nvm uninstall lts/argon` | ||||||
|  - `nvm use --lts` / `nvm use --lts=argon` |  - `nvm use --lts` / `nvm use --lts=argon` / `nvm use 'lts/*'` / `nvm use lts/argon` | ||||||
|  - `nvm exec --lts` / `nvm exec --lts=argon` |  - `nvm exec --lts` / `nvm exec --lts=argon` / `nvm exec 'lts/*'` / `nvm exec lts/argon` | ||||||
|  - `nvm run --lts` / `nvm run --lts=argon` |  - `nvm run --lts` / `nvm run --lts=argon` / `nvm run 'lts/*'` / `nvm run lts/argon` | ||||||
|  - `nvm ls-remote --lts` / `nvm ls-remote --lts=argon` |  - `nvm ls-remote --lts` / `nvm ls-remote --lts=argon` `nvm ls-remote 'lts/*'` / `nvm ls-remote lts/argon` | ||||||
|  - `nvm version-remote --lts` / `nvm version-remote --lts=argon` |  - `nvm version-remote --lts` / `nvm version-remote --lts=argon` / `nvm version-remote 'lts/*'` / `nvm version-remote lts/argon` | ||||||
|  |  | ||||||
| Any time your local copy of `nvm` connects to https://nodejs.org, it will re-create the appropriate local aliases for all available LTS lines. These aliases (stored under `$NVM_DIR/alias/lts`), are managed by `nvm`, and you should not modify, remove, or create these files - expect your changes to be undone, and expect meddling with these files to cause bugs that will likely not be supported. | Any time your local copy of `nvm` connects to https://nodejs.org, it will re-create the appropriate local aliases for all available LTS lines. These aliases (stored under `$NVM_DIR/alias/lts`), are managed by `nvm`, and you should not modify, remove, or create these files - expect your changes to be undone, and expect meddling with these files to cause bugs that will likely not be supported. | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										53
									
								
								nvm.sh
									
									
									
									
									
								
							
							
						
						
									
										53
									
								
								nvm.sh
									
									
									
									
									
								
							| @@ -2066,7 +2066,18 @@ nvm() { | |||||||
|         shift |         shift | ||||||
|       fi |       fi | ||||||
|  |  | ||||||
|       VERSION="$(NVM_VERSION_ONLY=true NVM_LTS="${LTS-}" nvm_remote_version "$provided_version")" |       case "${provided_version}" in | ||||||
|  |         'lts/*') | ||||||
|  |           LTS='*' | ||||||
|  |           provided_version='' | ||||||
|  |         ;; | ||||||
|  |         lts/*) | ||||||
|  |           LTS="${provided_version##lts/}" | ||||||
|  |           provided_version='' | ||||||
|  |         ;; | ||||||
|  |       esac | ||||||
|  |  | ||||||
|  |       VERSION="$(NVM_VERSION_ONLY=true NVM_LTS="${LTS-}" nvm_remote_version "${provided_version}")" | ||||||
|  |  | ||||||
|       if [ "_$VERSION" = "_N/A" ]; then |       if [ "_$VERSION" = "_N/A" ]; then | ||||||
|         local LTS_MSG |         local LTS_MSG | ||||||
| @@ -2200,9 +2211,12 @@ nvm() { | |||||||
|       PATTERN="${1-}" |       PATTERN="${1-}" | ||||||
|       case "${PATTERN-}" in |       case "${PATTERN-}" in | ||||||
|         --) ;; |         --) ;; | ||||||
|         --lts) |         --lts | 'lts/*') | ||||||
|           VERSION="$(nvm_match_version "lts/*")" |           VERSION="$(nvm_match_version "lts/*")" | ||||||
|         ;; |         ;; | ||||||
|  |         lts/*) | ||||||
|  |           VERSION="$(nvm_match_version "lts/${PATTERN##lts/}")" | ||||||
|  |         ;; | ||||||
|         --lts=*) |         --lts=*) | ||||||
|           VERSION="$(nvm_match_version "lts/${PATTERN##--lts=}")" |           VERSION="$(nvm_match_version "lts/${PATTERN##--lts=}")" | ||||||
|         ;; |         ;; | ||||||
| @@ -2614,7 +2628,10 @@ nvm() { | |||||||
|       do |       do | ||||||
|         case "${1-}" in |         case "${1-}" in | ||||||
|           --) ;; |           --) ;; | ||||||
|           --lts) LTS='*' ;; |           --lts) | ||||||
|  |             LTS='*' | ||||||
|  |             NVM_FLAVOR="${NVM_NODE_PREFIX}" | ||||||
|  |           ;; | ||||||
|           --lts=*) |           --lts=*) | ||||||
|             LTS="${1##--lts=}" |             LTS="${1##--lts=}" | ||||||
|             NVM_FLAVOR="${NVM_NODE_PREFIX}" |             NVM_FLAVOR="${NVM_NODE_PREFIX}" | ||||||
| @@ -2625,14 +2642,24 @@ nvm() { | |||||||
|             return 55; |             return 55; | ||||||
|           ;; |           ;; | ||||||
|           *) |           *) | ||||||
|             if [ -z "$PATTERN" ]; then |             if [ -z "${PATTERN-}" ]; then | ||||||
|               PATTERN="${1-}" |               PATTERN="${1-}" | ||||||
|               if [ -z "$NVM_FLAVOR" ]; then |               if [ -z "${NVM_FLAVOR-}" ]; then | ||||||
|                 case "_$PATTERN" in |                 case "${PATTERN}" in | ||||||
|                   "_$NVM_IOJS_PREFIX" | "_$NVM_NODE_PREFIX") |                   "${NVM_IOJS_PREFIX}" | "${NVM_NODE_PREFIX}") | ||||||
|                     NVM_FLAVOR="$PATTERN" |                     NVM_FLAVOR="${PATTERN}" | ||||||
|                     PATTERN="" |                     PATTERN="" | ||||||
|                   ;; |                   ;; | ||||||
|  |                   'lts/*') | ||||||
|  |                     LTS='*' | ||||||
|  |                     PATTERN='' | ||||||
|  |                     NVM_FLAVOR="${NVM_NODE_PREFIX}" | ||||||
|  |                   ;; | ||||||
|  |                   lts/*) | ||||||
|  |                     LTS="${PATTERN##lts/}" | ||||||
|  |                     PATTERN='' | ||||||
|  |                     NVM_FLAVOR="${NVM_NODE_PREFIX}" | ||||||
|  |                   ;; | ||||||
|                 esac |                 esac | ||||||
|               fi |               fi | ||||||
|             fi |             fi | ||||||
| @@ -2879,6 +2906,16 @@ $NVM_LS_REMOTE_POST_MERGED_OUTPUT" | nvm_grep -v "N/A" | command sed '/^$/d')" | |||||||
|         esac |         esac | ||||||
|         shift |         shift | ||||||
|       done |       done | ||||||
|  |       case "${PATTERN}" in | ||||||
|  |         'lts/*') | ||||||
|  |           NVM_LTS='*' | ||||||
|  |           unset PATTERN | ||||||
|  |         ;; | ||||||
|  |         lts/*) | ||||||
|  |           NVM_LTS="${PATTERN##lts/}" | ||||||
|  |           unset PATTERN | ||||||
|  |         ;; | ||||||
|  |       esac | ||||||
|       NVM_VERSION_ONLY=true NVM_LTS="${NVM_LTS-}" nvm_remote_version "${PATTERN:-node}" |       NVM_VERSION_ONLY=true NVM_LTS="${NVM_LTS-}" nvm_remote_version "${PATTERN:-node}" | ||||||
|     ;; |     ;; | ||||||
|     "--version" ) |     "--version" ) | ||||||
|   | |||||||
| @@ -32,6 +32,14 @@ OUTPUT="$(nvm version-remote --lts=argon foo)" | |||||||
| EXPECTED_OUTPUT='NVM_VERSION_ONLY:true,NVM_LTS:argon,PATTERN:foo' | EXPECTED_OUTPUT='NVM_VERSION_ONLY:true,NVM_LTS:argon,PATTERN:foo' | ||||||
| [ "${OUTPUT}" = "${EXPECTED_OUTPUT}" ] || die "\`nvm version-remote --lts=argon foo\` called nvm_remote_version with >${OUTPUT}<, expected >${EXPECTED_OUTPUT}<" | [ "${OUTPUT}" = "${EXPECTED_OUTPUT}" ] || die "\`nvm version-remote --lts=argon foo\` called nvm_remote_version with >${OUTPUT}<, expected >${EXPECTED_OUTPUT}<" | ||||||
|  |  | ||||||
|  | OUTPUT="$(nvm version-remote lts/foo)" | ||||||
|  | EXPECTED_OUTPUT='NVM_VERSION_ONLY:true,NVM_LTS:foo,PATTERN:' | ||||||
|  | [ "${OUTPUT}" = "${EXPECTED_OUTPUT}" ] || die "\`nvm version-remote lts/foo\` called nvm_remote_version with >${OUTPUT}<, expected >${EXPECTED_OUTPUT}<" | ||||||
|  |  | ||||||
|  | OUTPUT="$(nvm version-remote 'lts/*')" | ||||||
|  | EXPECTED_OUTPUT='NVM_VERSION_ONLY:true,NVM_LTS:*,PATTERN:' | ||||||
|  | [ "${OUTPUT}" = "${EXPECTED_OUTPUT}" ] || die "\`nvm version-remote lts/*\` called nvm_remote_version with >${OUTPUT}<, expected >${EXPECTED_OUTPUT}<" | ||||||
|  |  | ||||||
| set +ex # needed for stderr | set +ex # needed for stderr | ||||||
| OUTPUT="$(nvm version-remote --foo bar 2>&1)" | OUTPUT="$(nvm version-remote --foo bar 2>&1)" | ||||||
| set -ex | set -ex | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user