Compare commits
16 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c92adb3c47 | ||
|
|
15eba7b7e6 | ||
|
|
a1601eddb8 | ||
|
|
324b81a722 | ||
|
|
55075db96d | ||
|
|
4618ce0aa1 | ||
|
|
3afdce0a2c | ||
|
|
8fbf8ab694 | ||
|
|
4fc91d408c | ||
|
|
f86847fdd2 | ||
|
|
9a769630d7 | ||
|
|
c26422a03e | ||
|
|
7c3cd81ad9 | ||
|
|
0ebda7eea3 | ||
|
|
5410ae57ba | ||
|
|
70aa611abc |
13
.github/workflows/windows-npm.yml
vendored
13
.github/workflows/windows-npm.yml
vendored
@@ -125,9 +125,10 @@ jobs:
|
||||
nvm install ${{ matrix.npm-node-version }}
|
||||
|
||||
nvm_windows:
|
||||
permissions:
|
||||
contents: none
|
||||
needs: [wsl_matrix, cygwin_matrix, msys_matrix, msys_fail_install]
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- run: 'echo tests completed'
|
||||
name: 'tests, on windows'
|
||||
permissions:
|
||||
contents: none
|
||||
needs: [wsl_matrix, cygwin_matrix, msys_matrix, msys_fail_install]
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- run: 'echo tests completed'
|
||||
|
||||
@@ -74,8 +74,6 @@ Verify your changes
|
||||
|
||||
```
|
||||
npm test
|
||||
# or
|
||||
npm run tests-only
|
||||
```
|
||||
|
||||
Push your changes
|
||||
|
||||
38
README.md
38
README.md
@@ -1,6 +1,12 @@
|
||||
<a href="https://github.com/nvm-sh/logos"><img alt="nvm project logo" src="https://raw.githubusercontent.com/nvm-sh/logos/HEAD/nvm-logo-color.svg" height="50" /></a>
|
||||
<a href="https://github.com/nvm-sh/logos">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/nvm-sh/logos/HEAD/nvm-logo-white.svg" />
|
||||
<img src="https://raw.githubusercontent.com/nvm-sh/logos/HEAD/nvm-logo-color.svg" height="50" alt="nvm project logo" />
|
||||
</picture>
|
||||
</a>
|
||||
|
||||
# Node Version Manager [][3] [][4] [](https://bestpractices.coreinfrastructure.org/projects/684)
|
||||
|
||||
# Node Version Manager [][3] [][4] [](https://bestpractices.coreinfrastructure.org/projects/684)
|
||||
|
||||
<!-- To update this table of contents, ensure you have run `npm install` then `npm run doctoc` -->
|
||||
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
|
||||
@@ -95,10 +101,10 @@ nvm is a version manager for [node.js](https://nodejs.org/en/), designed to be i
|
||||
|
||||
To **install** or **update** nvm, you should run the [install script][2]. To do that, you may either download and run the script manually, or use the following cURL or Wget command:
|
||||
```sh
|
||||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
|
||||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
|
||||
```
|
||||
```sh
|
||||
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
|
||||
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
|
||||
```
|
||||
|
||||
Running either of the above commands downloads a script and runs it. The script clones the nvm repository to `~/.nvm`, and attempts to add the source lines from the snippet below to the correct profile file (`~/.bash_profile`, `~/.zshrc`, `~/.profile`, or `~/.bashrc`).
|
||||
@@ -120,6 +126,8 @@ Eg: `curl ... | NVM_DIR="path/to/nvm"`. Ensure that the `NVM_DIR` does not conta
|
||||
|
||||
- The installer can use `git`, `curl`, or `wget` to download `nvm`, whichever is available.
|
||||
|
||||
- You can instruct the installer to not edit your shell config (for example if you already get completions via a [zsh nvm plugin](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/nvm)) by setting `PROFILE=/dev/null` before running the `install.sh` script. Here's an example one-line command to do that: `PROFILE=/dev/null bash -c 'curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash'`
|
||||
|
||||
#### 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.
|
||||
@@ -166,7 +174,7 @@ You can use a task:
|
||||
```yaml
|
||||
- name: Install nvm
|
||||
ansible.builtin.shell: >
|
||||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
|
||||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
|
||||
args:
|
||||
creates: "{{ ansible_env.HOME }}/.nvm/nvm.sh"
|
||||
```
|
||||
@@ -228,7 +236,7 @@ If you have `git` installed (requires git v1.7.10+):
|
||||
|
||||
1. clone this repo in the root of your user profile
|
||||
- `cd ~/` from anywhere then `git clone https://github.com/nvm-sh/nvm.git .nvm`
|
||||
1. `cd ~/.nvm` and check out the latest version with `git checkout v0.39.3`
|
||||
1. `cd ~/.nvm` and check out the latest version with `git checkout v0.39.5`
|
||||
1. activate `nvm` by sourcing it from your shell: `. ./nvm.sh`
|
||||
|
||||
Now add these lines to your `~/.bashrc`, `~/.profile`, or `~/.zshrc` file to have it automatically sourced upon login:
|
||||
@@ -491,7 +499,9 @@ nvm deactivate
|
||||
To set a default Node version to be used in any new shell, use the alias 'default':
|
||||
|
||||
```sh
|
||||
nvm alias default node
|
||||
nvm alias default node # this refers to the latest installed version of node
|
||||
nvm alias default 18 # this refers to the latest installed v18.x version of node
|
||||
nvm alias default 18.12 # this refers to the latest installed v18.12.x version of node
|
||||
```
|
||||
|
||||
#### Use a mirror of node binaries
|
||||
@@ -548,6 +558,8 @@ The contents of a `.nvmrc` file **must** be the `<version>` (as described by `nv
|
||||
|
||||
You can use [`avn`](https://github.com/wbyoung/avn) to deeply integrate into your shell and automatically invoke `nvm` when changing directories. `avn` is **not** supported by the `nvm` maintainers. Please [report issues to the `avn` team](https://github.com/wbyoung/avn/issues/new).
|
||||
|
||||
You can also use [`nvshim`](https://github.com/iamogbz/nvshim) to shim the `node`, `npm`, and `npx` bins to automatically use the `nvm` config in the current directory. `nvshim` is **not** supported by the `nvm` maintainers. Please [report issues to the `nvshim` team](https://github.com/iamogbz/nvshim/issues/new).
|
||||
|
||||
If you prefer a lighter-weight solution, the recipes below have been contributed by `nvm` users. They are **not** supported by the `nvm` maintainers. We are, however, accepting pull requests for more examples.
|
||||
|
||||
#### bash
|
||||
@@ -799,13 +811,13 @@ If installing nvm on Alpine Linux *is* still what you want or need to do, you sh
|
||||
### Alpine Linux 3.13+
|
||||
```sh
|
||||
apk add -U curl bash ca-certificates openssl ncurses coreutils python3 make gcc g++ libgcc linux-headers grep util-linux binutils findutils
|
||||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
|
||||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
|
||||
```
|
||||
|
||||
### Alpine Linux 3.5 - 3.12
|
||||
```sh
|
||||
apk add -U curl bash ca-certificates openssl ncurses coreutils python2 make gcc g++ libgcc linux-headers grep util-linux binutils findutils
|
||||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
|
||||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
|
||||
```
|
||||
|
||||
_Note: Alpine 3.5 can only install NodeJS versions up to v6.9.5, Alpine 3.6 can only install versions up to v6.10.3, Alpine 3.7 installs versions up to v8.9.3, Alpine 3.8 installs versions up to v8.14.0, Alpine 3.9 installs versions up to v10.19.0, Alpine 3.10 installs versions up to v10.24.1, Alpine 3.11 installs versions up to v12.22.6, Alpine 3.12 installs versions up to v12.22.12, Alpine 3.13 & 3.14 install versions up to v14.20.0, Alpine 3.15 & 3.16 install versions up to v16.16.0 (**These are all versions on the main branch**). Alpine 3.5 - 3.12 required the package `python2` to build NodeJS, as they are older versions to build. Alpine 3.13+ requires `python3` to successfully build newer NodeJS versions, but you can use `python2` with Alpine 3.13+ if you need to build versions of node supported in Alpine 3.5 - 3.15, you just need to specify what version of NodeJS you need to install in the package install script._
|
||||
@@ -904,9 +916,9 @@ You have to make sure that the user directory name in `$HOME` and the user direc
|
||||
To change the user directory and/or account name follow the instructions [here](https://support.apple.com/en-us/HT201548)
|
||||
|
||||
[1]: https://github.com/nvm-sh/nvm.git
|
||||
[2]: https://github.com/nvm-sh/nvm/blob/v0.39.3/install.sh
|
||||
[2]: https://github.com/nvm-sh/nvm/blob/v0.39.5/install.sh
|
||||
[3]: https://app.travis-ci.com/nvm-sh/nvm
|
||||
[4]: https://github.com/nvm-sh/nvm/releases/tag/v0.39.3
|
||||
[4]: https://github.com/nvm-sh/nvm/releases/tag/v0.39.5
|
||||
[Urchin]: https://git.sdf.org/tlevine/urchin
|
||||
[Fish]: https://fishshell.com
|
||||
|
||||
@@ -991,7 +1003,7 @@ Now you should be able to use node as usual.
|
||||
If you've encountered this error on WSL-2:
|
||||
|
||||
```sh
|
||||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
|
||||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
|
||||
% Total % Received % Xferd Average Speed Time Time Time Current
|
||||
Dload Upload Total Spent Left Speed
|
||||
0 0 0 0 0 0 0 0 --:--:-- 0:00:09 --:--:-- 0curl: (6) Could not resolve host: raw.githubusercontent.com
|
||||
@@ -1012,7 +1024,7 @@ This could simply be solved by running this in your root directory:
|
||||
sudo chattr +i /etc/resolv.conf
|
||||
```
|
||||
|
||||
This deletes your `resolve.conf` file thats automatically generated when u run WSL, creates a new file and puts `nameserver 8.8.8.8`, then creates a `wsl.conf` file and adds `[network]` and `generateResolveConf = false` to prevent auto generation of that file.
|
||||
This deletes your `resolv.conf` file thats automatically generated when u run WSL, creates a new file and puts `nameserver 8.8.8.8`, then creates a `wsl.conf` file and adds `[network]` and `generateResolveConf = false` to prevent auto generation of that file.
|
||||
|
||||
You can check the contents of the file by running:
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ nvm_install_dir() {
|
||||
}
|
||||
|
||||
nvm_latest_version() {
|
||||
nvm_echo "v0.39.3"
|
||||
nvm_echo "v0.39.5"
|
||||
}
|
||||
|
||||
nvm_profile_is_bash_or_zsh() {
|
||||
|
||||
2
nvm-exec
2
nvm-exec
@@ -2,6 +2,8 @@
|
||||
|
||||
DIR="$(command cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
unset NVM_CD_FLAGS
|
||||
|
||||
# shellcheck disable=SC1090,SC1091
|
||||
\. "$DIR/nvm.sh" --no-use
|
||||
|
||||
|
||||
30
nvm.sh
30
nvm.sh
@@ -317,6 +317,21 @@ nvm_install_latest_npm() {
|
||||
if [ $NVM_IS_17_OR_ABOVE -eq 1 ] && nvm_version_greater_than_or_equal_to "${NODE_VERSION}" 18.0.0; then
|
||||
NVM_IS_18_OR_ABOVE=1
|
||||
fi
|
||||
local NVM_IS_18_17_OR_ABOVE
|
||||
NVM_IS_18_17_OR_ABOVE=0
|
||||
if [ $NVM_IS_18_OR_ABOVE -eq 1 ] && nvm_version_greater_than_or_equal_to "${NODE_VERSION}" 18.17.0; then
|
||||
NVM_IS_18_17_OR_ABOVE=1
|
||||
fi
|
||||
local NVM_IS_19_OR_ABOVE
|
||||
NVM_IS_19_OR_ABOVE=0
|
||||
if [ $NVM_IS_18_17_OR_ABOVE -eq 1 ] && nvm_version_greater_than_or_equal_to "${NODE_VERSION}" 19.0.0; then
|
||||
NVM_IS_19_OR_ABOVE=1
|
||||
fi
|
||||
local NVM_IS_20_5_OR_ABOVE
|
||||
NVM_IS_20_5_OR_ABOVE=0
|
||||
if [ $NVM_IS_19_OR_ABOVE -eq 1 ] && nvm_version_greater_than_or_equal_to "${NODE_VERSION}" 20.5.0; then
|
||||
NVM_IS_20_5_OR_ABOVE=1
|
||||
fi
|
||||
|
||||
if [ $NVM_IS_4_4_OR_BELOW -eq 1 ] || {
|
||||
[ $NVM_IS_5_OR_ABOVE -eq 1 ] && nvm_version_greater 5.10.0 "${NODE_VERSION}"; \
|
||||
@@ -357,6 +372,12 @@ nvm_install_latest_npm() {
|
||||
; then
|
||||
nvm_echo '* `npm` `v8.x` is the last version that works on `node` `v12`, `v14.13` - `v14.16`, or `v16.0` - `v16.12`'
|
||||
$NVM_NPM_CMD install -g npm@8
|
||||
elif \
|
||||
[ $NVM_IS_18_17_OR_ABOVE -eq 0 ] \
|
||||
|| { [ $NVM_IS_19_OR_ABOVE -eq 1 ] && [ $NVM_IS_20_5_OR_ABOVE -eq 0 ]; } \
|
||||
; then
|
||||
nvm_echo '* `npm` `v9.x` is the last version that works on `node` `< v18.17`, `v19`, or `v20.0` - `v20.4`'
|
||||
$NVM_NPM_CMD install -g npm@9
|
||||
else
|
||||
nvm_echo '* Installing latest `npm`; if this does not work on your node version, please report a bug!'
|
||||
$NVM_NPM_CMD install -g npm
|
||||
@@ -802,7 +823,8 @@ nvm_strip_path() {
|
||||
path = substr($0, length(NVM_DIR) + 1)
|
||||
if (path ~ "^(/versions/[^/]*)?/[^/]*'"${2-}"'.*$") { next }
|
||||
}
|
||||
{ print }' | command paste -s -d: -
|
||||
# The final RT will contain a colon if the input has a trailing colon, or a null string otherwise
|
||||
{ printf "%s%s", sep, $0; sep=RS } END { printf "%s", RT }'
|
||||
}
|
||||
|
||||
nvm_change_path() {
|
||||
@@ -1642,7 +1664,7 @@ nvm_compare_checksum() {
|
||||
nvm_err "Computed checksum of '${FILE}' is empty." # missing in raspberry pi binary
|
||||
nvm_err 'WARNING: Continuing *without checksum verification*'
|
||||
return
|
||||
elif [ "${COMPUTED_SUM}" != "${CHECKSUM}" ]; then
|
||||
elif [ "${COMPUTED_SUM}" != "${CHECKSUM}" ] && [ "${COMPUTED_SUM}" != "\\${CHECKSUM}" ]; then
|
||||
nvm_err "Checksums do not match: '${COMPUTED_SUM}' found, '${CHECKSUM}' expected."
|
||||
return 1
|
||||
fi
|
||||
@@ -1913,7 +1935,7 @@ nvm_get_arch() {
|
||||
case "${HOST_ARCH}" in
|
||||
x86_64 | amd64) NVM_ARCH="x64" ;;
|
||||
i*86) NVM_ARCH="x86" ;;
|
||||
aarch64) NVM_ARCH="arm64" ;;
|
||||
aarch64 | armv8l) NVM_ARCH="arm64" ;;
|
||||
*) NVM_ARCH="${HOST_ARCH}" ;;
|
||||
esac
|
||||
|
||||
@@ -4173,7 +4195,7 @@ nvm() {
|
||||
NVM_VERSION_ONLY=true NVM_LTS="${NVM_LTS-}" nvm_remote_version "${PATTERN:-node}"
|
||||
;;
|
||||
"--version" | "-v")
|
||||
nvm_echo '0.39.3'
|
||||
nvm_echo '0.39.5'
|
||||
;;
|
||||
"unload")
|
||||
nvm deactivate >/dev/null 2>&1
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "nvm",
|
||||
"version": "0.39.3",
|
||||
"version": "0.39.5",
|
||||
"description": "Node Version Manager - Simple bash script to manage multiple active node.js versions",
|
||||
"directories": {
|
||||
"test": "test"
|
||||
@@ -43,9 +43,9 @@
|
||||
"dockerfile_lint": "^0.3.4",
|
||||
"doctoc": "^2.2.1",
|
||||
"eclint": "^2.8.1",
|
||||
"markdown-link-check": "^3.11.0",
|
||||
"markdown-link-check": "^3.11.2",
|
||||
"replace": "^1.2.2",
|
||||
"semver": "^7.3.8",
|
||||
"semver": "^7.5.4",
|
||||
"urchin": "^0.0.5"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -80,5 +80,6 @@ run_test x86 osx x86
|
||||
run_test amd64 osx x64
|
||||
|
||||
run_test arm64 smartos x64
|
||||
run_test armv8l smartos x64
|
||||
|
||||
cleanup
|
||||
|
||||
@@ -16,3 +16,9 @@ TEST_PATH="$NVM_DIR/v0.10.5/bin:/usr/bin:$NVM_DIR/v0.11.5/bin:$NVM_DIR/v0.9.5/bi
|
||||
STRIPPED_PATH=`nvm_strip_path "$TEST_PATH" "/bin"`
|
||||
|
||||
[ "$STRIPPED_PATH" = "/usr/bin:/usr/local/bin" ] || die "Not correctly stripped: $STRIPPED_PATH "
|
||||
|
||||
TEST_PATH=":/a/b/bin::/c/d/bin:"
|
||||
|
||||
STRIPPED_PATH=`nvm_strip_path "$TEST_PATH" "/bin"`
|
||||
|
||||
[ "$STRIPPED_PATH" = "$TEST_PATH" ] || die "Stripping does not preserve colons: $STRIPPED_PATH "
|
||||
|
||||
@@ -6,3 +6,13 @@ NVM_ENV=testing \. ../../install.sh
|
||||
|
||||
#nvm_do_install is available
|
||||
type nvm_do_install > /dev/null 2>&1 || die 'nvm_do_install is not available'
|
||||
|
||||
FILE_PATH="$(pwd)/nvm_do_install"
|
||||
echo $FILE_PATH
|
||||
$(NVM_DIR="${FILE_PATH}" nvm_do_install >/dev/null 2>&1)
|
||||
EXIT_CODE=$(echo $?)
|
||||
[ "${EXIT_CODE}" = '1' ] || die "nvm_do_install should fail if NVM_DIR is a file: expected 1, got <${EXIT_CODE}>"
|
||||
|
||||
ACTUAL="$(NVM_DIR="${FILE_PATH}" nvm_do_install 2>&1)"
|
||||
EXPECTED="File \"${FILE_PATH}\" has the same name as installation directory."
|
||||
[ "${ACTUAL}" = "${EXPECTED}" ] || die "got <${ACTUAL}>, expected <${EXPECTED}>"
|
||||
|
||||
5
test/mocks/uname_linux_armv8l
Executable file
5
test/mocks/uname_linux_armv8l
Executable file
@@ -0,0 +1,5 @@
|
||||
if [ "_$1" = "_-m" ]; then
|
||||
echo "armv8l"
|
||||
else
|
||||
echo "Linux 3.18.14-14721103 #1 SMP PREEMPT Thu Mar 5 20:35:37 KST 2020 armv8l armv8l armv8l GNU/Linux"
|
||||
fi
|
||||
Reference in New Issue
Block a user