mirror of
https://github.com/nvm-sh/nvm.git
synced 2026-04-27 14:35:46 +08:00
Compare commits
8 Commits
awk
...
f0fdd7509c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f0fdd7509c | ||
|
|
8066dc8511 | ||
|
|
59b40b8ae7 | ||
|
|
ce777fa5cf | ||
|
|
650b069bb8 | ||
|
|
5a28180ed6 | ||
|
|
05feeaa927 | ||
|
|
e2ff1e7f08 |
59
README.md
59
README.md
@@ -19,7 +19,6 @@
|
|||||||
- [Install & Update Script](#install--update-script)
|
- [Install & Update Script](#install--update-script)
|
||||||
- [Additional Notes](#additional-notes)
|
- [Additional Notes](#additional-notes)
|
||||||
- [Installing in Docker](#installing-in-docker)
|
- [Installing in Docker](#installing-in-docker)
|
||||||
- [Installing in Docker for CICD-Jobs](#installing-in-docker-for-cicd-jobs)
|
|
||||||
- [Troubleshooting on Linux](#troubleshooting-on-linux)
|
- [Troubleshooting on Linux](#troubleshooting-on-linux)
|
||||||
- [Troubleshooting on macOS](#troubleshooting-on-macos)
|
- [Troubleshooting on macOS](#troubleshooting-on-macos)
|
||||||
- [Ansible](#ansible)
|
- [Ansible](#ansible)
|
||||||
@@ -155,62 +154,6 @@ RUN echo node > .nvmrc
|
|||||||
RUN nvm install
|
RUN nvm install
|
||||||
```
|
```
|
||||||
|
|
||||||
##### Installing in Docker for CICD-Jobs
|
|
||||||
|
|
||||||
More robust, works in CI/CD-Jobs. Can be run in interactive and non-interactive containers.
|
|
||||||
See https://github.com/nvm-sh/nvm/issues/3531.
|
|
||||||
|
|
||||||
```Dockerfile
|
|
||||||
FROM ubuntu:latest
|
|
||||||
ARG NODE_VERSION=20
|
|
||||||
|
|
||||||
# install curl
|
|
||||||
RUN apt update && apt install curl -y
|
|
||||||
|
|
||||||
# install nvm
|
|
||||||
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
|
|
||||||
|
|
||||||
# set env
|
|
||||||
ENV NVM_DIR=/root/.nvm
|
|
||||||
|
|
||||||
# install node
|
|
||||||
RUN bash -c "source $NVM_DIR/nvm.sh && nvm install $NODE_VERSION"
|
|
||||||
|
|
||||||
# set ENTRYPOINT for reloading nvm-environment
|
|
||||||
ENTRYPOINT ["bash", "-c", "source $NVM_DIR/nvm.sh && exec \"$@\"", "--"]
|
|
||||||
|
|
||||||
# set cmd to bash
|
|
||||||
CMD ["/bin/bash"]
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
This example defaults to installation of nodejs version 20.x.y. Optionally you can easily override the version with docker build args like:
|
|
||||||
```
|
|
||||||
docker build -t nvmimage --build-arg NODE_VERSION=19 .
|
|
||||||
```
|
|
||||||
|
|
||||||
After creation of the image you can start container interactively and run commands, for example:
|
|
||||||
```
|
|
||||||
docker run --rm -it nvmimage
|
|
||||||
|
|
||||||
root@0a6b5a237c14:/# nvm -v
|
|
||||||
0.40.1
|
|
||||||
|
|
||||||
root@0a6b5a237c14:/# node -v
|
|
||||||
v19.9.0
|
|
||||||
|
|
||||||
root@0a6b5a237c14:/# npm -v
|
|
||||||
9.6.3
|
|
||||||
```
|
|
||||||
|
|
||||||
Noninteractive example:
|
|
||||||
```
|
|
||||||
user@host:/tmp/test $ docker run --rm -it nvmimage node -v
|
|
||||||
v19.9.0
|
|
||||||
user@host:/tmp/test $ docker run --rm -it nvmimage npm -v
|
|
||||||
9.6.3
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Troubleshooting on Linux
|
#### Troubleshooting on Linux
|
||||||
|
|
||||||
On Linux, after running the install script, if you get `nvm: command not found` or see no feedback from your terminal after you type `command -v nvm`, simply close your current terminal, open a new terminal, and try verifying again.
|
On Linux, after running the install script, if you get `nvm: command not found` or see no feedback from your terminal after you type `command -v nvm`, simply close your current terminal, open a new terminal, and try verifying again.
|
||||||
@@ -890,7 +833,7 @@ my_alias default v10.22.0 v12.18.3 v14.8.0
|
|||||||
|
|
||||||
## Compatibility Issues
|
## Compatibility Issues
|
||||||
|
|
||||||
`nvm` will encounter some issues if you have some non-default settings set. (see [#606](https://github.com/nvm-sh/nvm/issues/606))
|
`nvm` will encounter some issues if you have some non-default settings set. (see [#606](https://github.com/creationix/nvm/issues/606))
|
||||||
The following are known to cause issues:
|
The following are known to cause issues:
|
||||||
|
|
||||||
Inside `~/.npmrc`:
|
Inside `~/.npmrc`:
|
||||||
|
|||||||
1
nvm-exec
1
nvm-exec
@@ -7,6 +7,7 @@ unset NVM_CD_FLAGS
|
|||||||
# shellcheck disable=SC1090,SC1091
|
# shellcheck disable=SC1090,SC1091
|
||||||
\. "$DIR/nvm.sh" --no-use
|
\. "$DIR/nvm.sh" --no-use
|
||||||
|
|
||||||
|
nvm_rc_version > /dev/null && nvm_ensure_version_installed "$NVM_RC_VERSION";
|
||||||
if [ -n "$NODE_VERSION" ]; then
|
if [ -n "$NODE_VERSION" ]; then
|
||||||
nvm use "$NODE_VERSION" > /dev/null || exit 127
|
nvm use "$NODE_VERSION" > /dev/null || exit 127
|
||||||
elif ! nvm use >/dev/null 2>&1; then
|
elif ! nvm use >/dev/null 2>&1; then
|
||||||
|
|||||||
2
nvm.sh
2
nvm.sh
@@ -2740,7 +2740,7 @@ nvm_npm_global_modules() {
|
|||||||
NPMLIST=$(nvm use "${VERSION}" >/dev/null && npm list -g --depth=0 2>/dev/null | command sed -e '1d' -e '/UNMET PEER DEPENDENCY/d')
|
NPMLIST=$(nvm use "${VERSION}" >/dev/null && npm list -g --depth=0 2>/dev/null | command sed -e '1d' -e '/UNMET PEER DEPENDENCY/d')
|
||||||
|
|
||||||
local INSTALLS
|
local INSTALLS
|
||||||
INSTALLS=$(nvm_echo "${NPMLIST}" | command sed -e '/ -> / d' -e '/\(empty\)/ d' -e 's/^.* \(.*@[^ ]*\).*/\1/' -e '/^npm@[^ ]*.*$/ d' -e '/^corepack@[^ ]*.*$/ d' | command xargs)
|
INSTALLS=$(nvm_echo "${NPMLIST}" | command sed -e '/ -> / d' -e '/\(empty\)/ d' -e 's/^.* \(.*@[^ ]*\).*/\1/' -e '/^npm@[^ ]*.*$/ d' | command xargs)
|
||||||
|
|
||||||
local LINKS
|
local LINKS
|
||||||
LINKS="$(nvm_echo "${NPMLIST}" | command sed -n 's/.* -> \(.*\)/\1/ p')"
|
LINKS="$(nvm_echo "${NPMLIST}" | command sed -n 's/.* -> \(.*\)/\1/ p')"
|
||||||
|
|||||||
@@ -45,9 +45,9 @@
|
|||||||
"dockerfile_lint": "^0.3.4",
|
"dockerfile_lint": "^0.3.4",
|
||||||
"doctoc": "^2.2.1",
|
"doctoc": "^2.2.1",
|
||||||
"eclint": "^2.8.1",
|
"eclint": "^2.8.1",
|
||||||
"markdown-link-check": "^3.13.7",
|
"markdown-link-check": "^3.13.6",
|
||||||
"replace": "^1.2.2",
|
"replace": "^1.2.2",
|
||||||
"semver": "^7.7.1",
|
"semver": "^7.6.3",
|
||||||
"urchin": "^0.0.5"
|
"urchin": "^0.0.5"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
19
test/fast/Running 'nvm-exec' should display required node version
Executable file
19
test/fast/Running 'nvm-exec' should display required node version
Executable file
@@ -0,0 +1,19 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -x
|
||||||
|
\. ../../nvm.sh
|
||||||
|
|
||||||
|
NVM_TEST_VERSION=v0.42
|
||||||
|
|
||||||
|
# Write it to nvmrc
|
||||||
|
echo "$NVM_TEST_VERSION" > .nvmrc
|
||||||
|
|
||||||
|
OUTPUT="$(../../nvm-exec 2>&1)";
|
||||||
|
EXPECTED="N/A: version \"${NVM_TEST_VERSION}\" is not yet installed.
|
||||||
|
|
||||||
|
You need to run \`nvm install ${NVM_TEST_VERSION}\` to install and use it.
|
||||||
|
No NODE_VERSION provided; no .nvmrc file found";
|
||||||
|
|
||||||
|
# Skip install, we want to test the error message
|
||||||
|
diff <(echo "${EXPECTED}") <(echo "${OUTPUT}")
|
||||||
|
rm .nvmrc
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
\. ../../../nvm.sh
|
\. ../../../nvm.sh
|
||||||
|
|
||||||
set -e
|
#set -e #nvm use system returns 127 and No system set message
|
||||||
|
|
||||||
die () {
|
die () {
|
||||||
# echo "$@" ;
|
# echo "$@" ;
|
||||||
@@ -24,7 +24,7 @@ fi
|
|||||||
# default system color
|
# default system color
|
||||||
nvm use system
|
nvm use system
|
||||||
OUTPUT=$(nvm_print_versions system)
|
OUTPUT=$(nvm_print_versions system)
|
||||||
FORMAT="\033[0;32m-> %12s\033[0m"
|
FORMAT="\033[0;33m%15s\033[0m"
|
||||||
VERSION='system'
|
VERSION='system'
|
||||||
EXPECTED_OUTPUT=$(command printf -- "${FORMAT}\\n" "${VERSION}")
|
EXPECTED_OUTPUT=$(command printf -- "${FORMAT}\\n" "${VERSION}")
|
||||||
|
|
||||||
@@ -34,7 +34,7 @@ nvm_ls_current() { echo "current";}
|
|||||||
|
|
||||||
# default current color
|
# default current color
|
||||||
OUTPUT=$(nvm_print_versions current)
|
OUTPUT=$(nvm_print_versions current)
|
||||||
FORMAT="\033[0;32m-> %12s\033[0m"
|
FORMAT="\033[0;32m->%13s\033[0m"
|
||||||
VERSION="current"
|
VERSION="current"
|
||||||
EXPECTED_OUTPUT=$(command printf -- "${FORMAT}\\n" "${VERSION}")
|
EXPECTED_OUTPUT=$(command printf -- "${FORMAT}\\n" "${VERSION}")
|
||||||
|
|
||||||
@@ -43,7 +43,7 @@ EXPECTED_OUTPUT=$(command printf -- "${FORMAT}\\n" "${VERSION}")
|
|||||||
# custom current color
|
# custom current color
|
||||||
nvm set-colors YCMGR
|
nvm set-colors YCMGR
|
||||||
OUTPUT=$(nvm_print_versions current)
|
OUTPUT=$(nvm_print_versions current)
|
||||||
FORMAT="\033[1;35m-> %12s\033[0m"
|
FORMAT="\033[1;35m->%13s\033[0m"
|
||||||
VERSION="current"
|
VERSION="current"
|
||||||
EXPECTED_OUTPUT=$(command printf -- "${FORMAT}\\n" "${VERSION}")
|
EXPECTED_OUTPUT=$(command printf -- "${FORMAT}\\n" "${VERSION}")
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ EXPECTED_PACKAGES_INSTALL="autoprefixer bower david@11 grunt-cli grunth-cli http
|
|||||||
echo "$EXPECTED_PACKAGES_INSTALL" | sed -e 's/test-npmlink //' | xargs npm install -g --quiet
|
echo "$EXPECTED_PACKAGES_INSTALL" | sed -e 's/test-npmlink //' | xargs npm install -g --quiet
|
||||||
|
|
||||||
get_packages() {
|
get_packages() {
|
||||||
npm list -g --depth=0 | \sed -e '1 d' -e 's/^.* \(.*\)@.*/\1/' -e '/^npm$/ d' -e '/^corepack$/ d' | xargs
|
npm list -g --depth=0 | \sed -e '1 d' -e 's/^.* \(.*\)@.*/\1/' -e '/^npm$/ d' | xargs
|
||||||
}
|
}
|
||||||
|
|
||||||
nvm use 0.10.29
|
nvm use 0.10.29
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ die () { echo "$@" ; exit 1; }
|
|||||||
\. ../../../nvm.sh
|
\. ../../../nvm.sh
|
||||||
|
|
||||||
get_packages() {
|
get_packages() {
|
||||||
npm list -g --depth=0 | \sed -e '1 d' -e 's/^.* \(.*\)@.*/\1/' -e '/^npm$/ d' -e '/^corepack$/ d' | xargs
|
npm list -g --depth=0 | \sed -e '1 d' -e 's/^.* \(.*\)@.*/\1/' -e '/^npm$/ d' | xargs
|
||||||
}
|
}
|
||||||
|
|
||||||
nvm use 4.7.2
|
nvm use 4.7.2
|
||||||
@@ -14,14 +14,5 @@ ORIGINAL_PACKAGES=$(get_packages)
|
|||||||
nvm reinstall-packages 4.7.1
|
nvm reinstall-packages 4.7.1
|
||||||
FINAL_PACKAGES=$(get_packages)
|
FINAL_PACKAGES=$(get_packages)
|
||||||
|
|
||||||
[ -z "${ORIGINAL_PACKAGES}" ] || die "v4: original packages were not empty: ${ORIGINAL_PACKAGES}"
|
[ -z "${ORIGINAL_PACKAGES}" ] || die "original packages were not empty: ${ORIGINAL_PACKAGES}"
|
||||||
[ -z "${FINAL_PACKAGES}" ] || die "v4: final packages were not empty: ${FINAL_PACKAGES}"
|
[ -z "${FINAL_PACKAGES}" ] || die "final packages were not empty: ${FINAL_PACKAGES}"
|
||||||
|
|
||||||
nvm use 23.8.20
|
|
||||||
ORIGINAL_PACKAGES=$(get_packages)
|
|
||||||
|
|
||||||
nvm reinstall-packages 23.8.0
|
|
||||||
FINAL_PACKAGES=$(get_packages)
|
|
||||||
|
|
||||||
[ -z "${ORIGINAL_PACKAGES}" ] || die "v23: original packages were not empty: ${ORIGINAL_PACKAGES}"
|
|
||||||
[ -z "${FINAL_PACKAGES}" ] || die "v23: final packages were not empty: ${FINAL_PACKAGES}"
|
|
||||||
|
|||||||
Reference in New Issue
Block a user