Merge c06050d079 into 39d9a42c35
This commit is contained in:
commit
164ce09345
21
README.md
21
README.md
|
|
@ -287,6 +287,13 @@ To install a specific version of node:
|
||||||
nvm install 14.7.0 # or 16.3.0, 12.22.1, etc
|
nvm install 14.7.0 # or 16.3.0, 12.22.1, etc
|
||||||
```
|
```
|
||||||
|
|
||||||
|
To set an alias:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
nvm alias my_alias v14.4.0
|
||||||
|
```
|
||||||
|
Make sure that your alias does not contain any spaces or any hashtags (#).
|
||||||
|
|
||||||
The first version installed becomes the default. New shells will start with the default version of node (e.g., `nvm alias default`).
|
The first version installed becomes the default. New shells will start with the default version of node (e.g., `nvm alias default`).
|
||||||
|
|
||||||
You can list available versions using `ls-remote`:
|
You can list available versions using `ls-remote`:
|
||||||
|
|
@ -535,9 +542,18 @@ Found '/path/to/project/.nvmrc' with version <5.9>
|
||||||
Now using node v5.9.1 (npm v3.7.3)
|
Now using node v5.9.1 (npm v3.7.3)
|
||||||
```
|
```
|
||||||
|
|
||||||
`nvm use` et. al. will traverse directory structure upwards from the current directory looking for the `.nvmrc` file. In other words, running `nvm use` et. al. in any subdirectory of a directory with an `.nvmrc` will result in that `.nvmrc` being utilized.
|
`.nvmrc` files may have comments. The following is the notation to have a comment inside a `.nvmrc` file:
|
||||||
|
```bash
|
||||||
|
# This is a comment
|
||||||
|
|
||||||
The contents of a `.nvmrc` file **must** be the `<version>` (as described by `nvm --help`) followed by a newline. No trailing spaces are allowed, and the trailing newline is required.
|
node # Another comment
|
||||||
|
```
|
||||||
|
When reading the `.nvmrc` file, nvm will:
|
||||||
|
1. Remove all comments on their own line as shown in the first line of the example
|
||||||
|
2. Remove all comments in middle of a line. Because of this, # is not allowed inside your `nvm` alias. Example on line 3
|
||||||
|
3. Remove all newlines such as the one on line 2
|
||||||
|
4. Remove all tabs
|
||||||
|
5. Trim the lines
|
||||||
|
|
||||||
### Deeper Shell Integration
|
### Deeper Shell Integration
|
||||||
|
|
||||||
|
|
@ -704,7 +720,6 @@ nvm exposes the following environment variables:
|
||||||
|
|
||||||
Additionally, nvm modifies `PATH`, and, if present, `MANPATH` and `NODE_PATH` when changing versions.
|
Additionally, nvm modifies `PATH`, and, if present, `MANPATH` and `NODE_PATH` when changing versions.
|
||||||
|
|
||||||
|
|
||||||
## Bash Completion
|
## Bash Completion
|
||||||
|
|
||||||
To activate, you need to source `bash_completion`:
|
To activate, you need to source `bash_completion`:
|
||||||
|
|
|
||||||
95
nvm.sh
95
nvm.sh
|
|
@ -411,23 +411,28 @@ nvm_find_nvmrc() {
|
||||||
|
|
||||||
# Obtain nvm version from rc file
|
# Obtain nvm version from rc file
|
||||||
nvm_rc_version() {
|
nvm_rc_version() {
|
||||||
|
local NVM_USE_SILENT
|
||||||
|
NVM_USE_SILENT=false
|
||||||
|
if [ "${1-}" = '--silent' ]; then
|
||||||
|
NVM_USE_SILENT=true
|
||||||
|
fi
|
||||||
export NVM_RC_VERSION=''
|
export NVM_RC_VERSION=''
|
||||||
local NVMRC_PATH
|
local NVMRC_PATH
|
||||||
NVMRC_PATH="$(nvm_find_nvmrc)"
|
NVMRC_PATH="$(nvm_find_nvmrc)"
|
||||||
if [ ! -e "${NVMRC_PATH}" ]; then
|
if [ ! -e "${NVMRC_PATH}" ]; then
|
||||||
if [ "${NVM_SILENT:-0}" -ne 1 ]; then
|
if [ "${NVM_USE_SILENT}" != true ]; then
|
||||||
nvm_err "No .nvmrc file found"
|
nvm_err "No .nvmrc file found"
|
||||||
fi
|
fi
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
NVM_RC_VERSION="$(command head -n 1 "${NVMRC_PATH}" | command tr -d '\r')" || command printf ''
|
NVM_RC_VERSION="$(command cat "${NVMRC_PATH}" | command tr -d '\r' | sed -e 's/\s*#.*$// ; /^\s*$/d' | command tr -d '\n' | command tr -d '\t' | command head -n 1 | sed -e 's/ *$//g ; s/^ *//g')" || command printf ''
|
||||||
if [ -z "${NVM_RC_VERSION}" ]; then
|
if [ -z "${NVM_RC_VERSION}" ]; then
|
||||||
if [ "${NVM_SILENT:-0}" -ne 1 ]; then
|
if [ "${NVM_USE_SILENT}" != true ]; then
|
||||||
nvm_err "Warning: empty .nvmrc file found at \"${NVMRC_PATH}\""
|
nvm_err "Warning: empty .nvmrc file found at \"${NVMRC_PATH}\""
|
||||||
fi
|
fi
|
||||||
return 2
|
return 2
|
||||||
fi
|
fi
|
||||||
if [ "${NVM_SILENT:-0}" -ne 1 ]; then
|
if [ "${NVM_USE_SILENT}" != true ]; then
|
||||||
nvm_echo "Found '${NVMRC_PATH}' with version <${NVM_RC_VERSION}>"
|
nvm_echo "Found '${NVMRC_PATH}' with version <${NVM_RC_VERSION}>"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
@ -3467,24 +3472,25 @@ nvm() {
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
"deactivate")
|
"deactivate")
|
||||||
local NVM_SILENT
|
local NVM_USE_SILENT
|
||||||
while [ $# -ne 0 ]; do
|
while [ $# -ne 0 ]; do
|
||||||
case "${1}" in
|
case "$1" in
|
||||||
--silent) NVM_SILENT=1 ;;
|
--silent)
|
||||||
--) ;;
|
NVM_USE_SILENT=1
|
||||||
|
shift
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
shift
|
|
||||||
done
|
done
|
||||||
local NEWPATH
|
local NEWPATH
|
||||||
NEWPATH="$(nvm_strip_path "${PATH}" "/bin")"
|
NEWPATH="$(nvm_strip_path "${PATH}" "/bin")"
|
||||||
if [ "_${PATH}" = "_${NEWPATH}" ]; then
|
if [ "_${PATH}" = "_${NEWPATH}" ]; then
|
||||||
if [ "${NVM_SILENT:-0}" -ne 1 ]; then
|
if [ "$NVM_USE_SILENT" -ne 1 ]; then
|
||||||
nvm_err "Could not find ${NVM_DIR}/*/bin in \${PATH}"
|
nvm_err "Could not find ${NVM_DIR}/*/bin in \${PATH}"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
export PATH="${NEWPATH}"
|
export PATH="${NEWPATH}"
|
||||||
hash -r
|
hash -r
|
||||||
if [ "${NVM_SILENT:-0}" -ne 1 ]; then
|
if [ "$NVM_USE_SILENT" -ne 1 ]; then
|
||||||
nvm_echo "${NVM_DIR}/*/bin removed from \${PATH}"
|
nvm_echo "${NVM_DIR}/*/bin removed from \${PATH}"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
@ -3492,12 +3498,12 @@ nvm() {
|
||||||
if [ -n "${MANPATH-}" ]; then
|
if [ -n "${MANPATH-}" ]; then
|
||||||
NEWPATH="$(nvm_strip_path "${MANPATH}" "/share/man")"
|
NEWPATH="$(nvm_strip_path "${MANPATH}" "/share/man")"
|
||||||
if [ "_${MANPATH}" = "_${NEWPATH}" ]; then
|
if [ "_${MANPATH}" = "_${NEWPATH}" ]; then
|
||||||
if [ "${NVM_SILENT:-0}" -ne 1 ]; then
|
if [ "$NVM_USE_SILENT" -ne 1 ]; then
|
||||||
nvm_err "Could not find ${NVM_DIR}/*/share/man in \${MANPATH}"
|
nvm_err "Could not find ${NVM_DIR}/*/share/man in \${MANPATH}"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
export MANPATH="${NEWPATH}"
|
export MANPATH="${NEWPATH}"
|
||||||
if [ "${NVM_SILENT:-0}" -ne 1 ]; then
|
if [ "$NVM_USE_SILENT" -ne 1 ]; then
|
||||||
nvm_echo "${NVM_DIR}/*/share/man removed from \${MANPATH}"
|
nvm_echo "${NVM_DIR}/*/share/man removed from \${MANPATH}"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
@ -3507,7 +3513,7 @@ nvm() {
|
||||||
NEWPATH="$(nvm_strip_path "${NODE_PATH}" "/lib/node_modules")"
|
NEWPATH="$(nvm_strip_path "${NODE_PATH}" "/lib/node_modules")"
|
||||||
if [ "_${NODE_PATH}" != "_${NEWPATH}" ]; then
|
if [ "_${NODE_PATH}" != "_${NEWPATH}" ]; then
|
||||||
export NODE_PATH="${NEWPATH}"
|
export NODE_PATH="${NEWPATH}"
|
||||||
if [ "${NVM_SILENT:-0}" -ne 1 ]; then
|
if [ "$NVM_USE_SILENT" -ne 1 ]; then
|
||||||
nvm_echo "${NVM_DIR}/*/lib/node_modules removed from \${NODE_PATH}"
|
nvm_echo "${NVM_DIR}/*/lib/node_modules removed from \${NODE_PATH}"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
@ -3517,7 +3523,8 @@ nvm() {
|
||||||
;;
|
;;
|
||||||
"use")
|
"use")
|
||||||
local PROVIDED_VERSION
|
local PROVIDED_VERSION
|
||||||
local NVM_SILENT
|
local NVM_USE_SILENT
|
||||||
|
NVM_USE_SILENT=0
|
||||||
local NVM_SILENT_ARG
|
local NVM_SILENT_ARG
|
||||||
local NVM_DELETE_PREFIX
|
local NVM_DELETE_PREFIX
|
||||||
NVM_DELETE_PREFIX=0
|
NVM_DELETE_PREFIX=0
|
||||||
|
|
@ -3526,7 +3533,7 @@ nvm() {
|
||||||
while [ $# -ne 0 ]; do
|
while [ $# -ne 0 ]; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
--silent)
|
--silent)
|
||||||
NVM_SILENT=1
|
NVM_USE_SILENT=1
|
||||||
NVM_SILENT_ARG='--silent'
|
NVM_SILENT_ARG='--silent'
|
||||||
;;
|
;;
|
||||||
--delete-prefix) NVM_DELETE_PREFIX=1 ;;
|
--delete-prefix) NVM_DELETE_PREFIX=1 ;;
|
||||||
|
|
@ -3546,7 +3553,12 @@ nvm() {
|
||||||
if [ -n "${NVM_LTS-}" ]; then
|
if [ -n "${NVM_LTS-}" ]; then
|
||||||
VERSION="$(nvm_match_version "lts/${NVM_LTS:-*}")"
|
VERSION="$(nvm_match_version "lts/${NVM_LTS:-*}")"
|
||||||
elif [ -z "${PROVIDED_VERSION-}" ]; then
|
elif [ -z "${PROVIDED_VERSION-}" ]; then
|
||||||
NVM_SILENT="${NVM_SILENT:-0}" nvm_rc_version
|
# Get the .nvmrc version depending if quiet mode is on or not
|
||||||
|
if [ "$NVM_USE_SILENT" -ne 1 ]; then
|
||||||
|
nvm_rc_version
|
||||||
|
else
|
||||||
|
nvm_rc_version --silent
|
||||||
|
fi
|
||||||
if [ -n "${NVM_RC_VERSION-}" ]; then
|
if [ -n "${NVM_RC_VERSION-}" ]; then
|
||||||
PROVIDED_VERSION="${NVM_RC_VERSION}"
|
PROVIDED_VERSION="${NVM_RC_VERSION}"
|
||||||
VERSION="$(nvm_version "${PROVIDED_VERSION}")"
|
VERSION="$(nvm_version "${PROVIDED_VERSION}")"
|
||||||
|
|
@ -3566,28 +3578,44 @@ nvm() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "_${VERSION}" = '_system' ]; then
|
if [ "_${VERSION}" = '_system' ]; then
|
||||||
if nvm_has_system_node && nvm deactivate "${NVM_SILENT_ARG-}" >/dev/null 2>&1; then
|
if [ $NVM_USE_SILENT -ne 1 ]; then
|
||||||
if [ "${NVM_SILENT:-0}" -ne 1 ]; then
|
if nvm_has_system_node && nvm deactivate >/dev/null 2>&1; then
|
||||||
nvm_echo "Now using system version of node: $(node -v 2>/dev/null)$(nvm_print_npm_version)"
|
if [ $NVM_USE_SILENT -ne 1 ]; then
|
||||||
|
nvm_echo "Now using system version of node: $(node -v 2>/dev/null)$(nvm_print_npm_version)"
|
||||||
|
fi
|
||||||
|
return
|
||||||
|
elif nvm_has_system_iojs && nvm deactivate >/dev/null 2>&1; then
|
||||||
|
if [ $NVM_USE_SILENT -ne 1 ]; then
|
||||||
|
nvm_echo "Now using system version of io.js: $(iojs --version 2>/dev/null)$(nvm_print_npm_version)"
|
||||||
|
fi
|
||||||
|
return
|
||||||
|
elif [ $NVM_USE_SILENT -ne 1 ]; then
|
||||||
|
nvm_err 'System version of node not found.'
|
||||||
fi
|
fi
|
||||||
return
|
else
|
||||||
elif nvm_has_system_iojs && nvm deactivate "${NVM_SILENT_ARG-}" >/dev/null 2>&1; then
|
if nvm_has_system_node && nvm deactivate --quiet >/dev/null 2>&1; then
|
||||||
if [ "${NVM_SILENT:-0}" -ne 1 ]; then
|
if [ $NVM_USE_SILENT -ne 1 ]; then
|
||||||
nvm_echo "Now using system version of io.js: $(iojs --version 2>/dev/null)$(nvm_print_npm_version)"
|
nvm_echo "Now using system version of node: $(node -v 2>/dev/null)$(nvm_print_npm_version)"
|
||||||
|
fi
|
||||||
|
return
|
||||||
|
elif nvm_has_system_iojs && nvm deactivate --quiet >/dev/null 2>&1; then
|
||||||
|
if [ $NVM_USE_SILENT -ne 1 ]; then
|
||||||
|
nvm_echo "Now using system version of io.js: $(iojs --version 2>/dev/null)$(nvm_print_npm_version)"
|
||||||
|
fi
|
||||||
|
return
|
||||||
|
elif [ $NVM_USE_SILENT -ne 1 ]; then
|
||||||
|
nvm_err 'System version of node not found.'
|
||||||
fi
|
fi
|
||||||
return
|
|
||||||
elif [ "${NVM_SILENT:-0}" -ne 1 ]; then
|
|
||||||
nvm_err 'System version of node not found.'
|
|
||||||
fi
|
fi
|
||||||
return 127
|
return 127
|
||||||
elif [ "_${VERSION}" = "_∞" ]; then
|
elif [ "_${VERSION}" = "_∞" ]; then
|
||||||
if [ "${NVM_SILENT:-0}" -ne 1 ]; then
|
if [ "${NVM_USE_SILENT}" -ne 1 ]; then
|
||||||
nvm_err "The alias \"${PROVIDED_VERSION}\" leads to an infinite loop. Aborting."
|
nvm_err "The alias \"${PROVIDED_VERSION}\" leads to an infinite loop. Aborting."
|
||||||
fi
|
fi
|
||||||
return 8
|
return 8
|
||||||
fi
|
fi
|
||||||
if [ "${VERSION}" = 'N/A' ]; then
|
if [ "${VERSION}" = 'N/A' ]; then
|
||||||
if [ "${NVM_SILENT:-0}" -ne 1 ]; then
|
if [ $NVM_USE_SILENT -ne 1 ]; then
|
||||||
nvm_err "N/A: version \"${PROVIDED_VERSION} -> ${VERSION}\" is not yet installed."
|
nvm_err "N/A: version \"${PROVIDED_VERSION} -> ${VERSION}\" is not yet installed."
|
||||||
nvm_err ""
|
nvm_err ""
|
||||||
nvm_err "You need to run \"nvm install ${PROVIDED_VERSION}\" to install it before using it."
|
nvm_err "You need to run \"nvm install ${PROVIDED_VERSION}\" to install it before using it."
|
||||||
|
|
@ -3622,7 +3650,7 @@ nvm() {
|
||||||
fi
|
fi
|
||||||
local NVM_USE_OUTPUT
|
local NVM_USE_OUTPUT
|
||||||
NVM_USE_OUTPUT=''
|
NVM_USE_OUTPUT=''
|
||||||
if [ "${NVM_SILENT:-0}" -ne 1 ]; then
|
if [ "${NVM_USE_SILENT}" -ne 1 ]; then
|
||||||
if nvm_is_iojs_version "${VERSION}"; then
|
if nvm_is_iojs_version "${VERSION}"; then
|
||||||
NVM_USE_OUTPUT="Now using io.js $(nvm_strip_iojs_prefix "${VERSION}")$(nvm_print_npm_version)"
|
NVM_USE_OUTPUT="Now using io.js $(nvm_strip_iojs_prefix "${VERSION}")$(nvm_print_npm_version)"
|
||||||
else
|
else
|
||||||
|
|
@ -3635,14 +3663,14 @@ nvm() {
|
||||||
if [ -n "${PROVIDED_VERSION}" ]; then
|
if [ -n "${PROVIDED_VERSION}" ]; then
|
||||||
NVM_USE_CMD="${NVM_USE_CMD} ${VERSION}"
|
NVM_USE_CMD="${NVM_USE_CMD} ${VERSION}"
|
||||||
fi
|
fi
|
||||||
if [ "${NVM_SILENT:-0}" -eq 1 ]; then
|
if [ "${NVM_USE_SILENT}" -eq 1 ]; then
|
||||||
NVM_USE_CMD="${NVM_USE_CMD} --silent"
|
NVM_USE_CMD="${NVM_USE_CMD} --silent"
|
||||||
fi
|
fi
|
||||||
if ! nvm_die_on_prefix "${NVM_DELETE_PREFIX}" "${NVM_USE_CMD}" "${NVM_VERSION_DIR}"; then
|
if ! nvm_die_on_prefix "${NVM_DELETE_PREFIX}" "${NVM_USE_CMD}" "${NVM_VERSION_DIR}"; then
|
||||||
return 11
|
return 11
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if [ -n "${NVM_USE_OUTPUT-}" ] && [ "${NVM_SILENT:-0}" -ne 1 ]; then
|
if [ -n "${NVM_USE_OUTPUT-}" ] && [ "$NVM_USE_SILENT" -ne 1 ]; then
|
||||||
nvm_echo "${NVM_USE_OUTPUT}"
|
nvm_echo "${NVM_USE_OUTPUT}"
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
@ -3969,6 +3997,9 @@ nvm() {
|
||||||
# so, unalias it.
|
# so, unalias it.
|
||||||
nvm unalias "${ALIAS}"
|
nvm unalias "${ALIAS}"
|
||||||
return $?
|
return $?
|
||||||
|
elif echo "$ALIAS" | grep -q "#"; then
|
||||||
|
nvm_err "Aliases may not have a # inside it"
|
||||||
|
exit 1
|
||||||
elif [ "${TARGET}" != '--' ]; then
|
elif [ "${TARGET}" != '--' ]; then
|
||||||
# a target was passed: create an alias
|
# a target was passed: create an alias
|
||||||
if [ "${ALIAS#*\/}" != "${ALIAS}" ]; then
|
if [ "${ALIAS#*\/}" != "${ALIAS}" ]; then
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
die () { echo "$@" ; rm -f .nvmrc; exit 1; }
|
||||||
|
|
||||||
|
\. ../../../nvm.sh
|
||||||
|
|
||||||
|
nvm deactivate >/dev/null 2>&1 || die 'deactivate failed'
|
||||||
|
touch .nvmrc
|
||||||
|
echo '# Test' > .nvmrc
|
||||||
|
echo 'node' >> .nvmrc
|
||||||
|
OUTPUT="$(nvm_rc_version || die 'nvm_rc_version failed')"
|
||||||
|
EXPECTED_OUTPUT="Found '$(nvm_find_up .nvmrc)/.nvmrc' with version <node>"
|
||||||
|
|
||||||
|
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] \
|
||||||
|
|| die "'nvm_rc_version' did not output '$EXPECTED_OUTPUT'; got '$OUTPUT'"
|
||||||
|
|
||||||
|
rm -f .nvmrc
|
||||||
Loading…
Reference in New Issue