mirror of
https://github.com/nvm-sh/nvm.git
synced 2025-12-12 08:04:18 +00:00
Compare commits
3 Commits
fix-3474
...
c78bfd5b5b
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c78bfd5b5b | ||
|
|
5f7d419458 | ||
|
|
b42c165667 |
@@ -1,11 +1,3 @@
|
|||||||
---
|
|
||||||
name: File an issue…
|
|
||||||
about: Create a report to help us improve
|
|
||||||
title: ''
|
|
||||||
labels: ''
|
|
||||||
assignees: ''
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<!-- Thank you for being interested in nvm! Please help us by filling out the following form if you‘re having trouble. If you have a feature request, or some other question, please feel free to clear out the form. Thanks! -->
|
<!-- Thank you for being interested in nvm! Please help us by filling out the following form if you‘re having trouble. If you have a feature request, or some other question, please feel free to clear out the form. Thanks! -->
|
||||||
|
|
||||||
1
.github/ISSUE_TEMPLATE/config.yml
vendored
1
.github/ISSUE_TEMPLATE/config.yml
vendored
@@ -1 +0,0 @@
|
|||||||
blank_issues_enabled: false
|
|
||||||
2
.github/workflows/tests.yml
vendored
2
.github/workflows/tests.yml
vendored
@@ -1,6 +1,6 @@
|
|||||||
name: urchin tests
|
name: urchin tests
|
||||||
|
|
||||||
on: [push, pull_request]
|
on: [push]
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
|
|||||||
@@ -113,11 +113,3 @@ Co-authored-by: Name Here <email@here>
|
|||||||
|
|
||||||
# Where can I ask for help?
|
# Where can I ask for help?
|
||||||
If you have any questions, please contact [@LJHarb](mailto:ljharb@gmail.com).
|
If you have any questions, please contact [@LJHarb](mailto:ljharb@gmail.com).
|
||||||
|
|
||||||
# Developer's Certificate of Origin 1.1
|
|
||||||
|
|
||||||
By making a contribution to this project, I certify that:
|
|
||||||
- The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or
|
|
||||||
- The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or
|
|
||||||
- The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it.
|
|
||||||
- I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved.
|
|
||||||
|
|||||||
@@ -588,7 +588,9 @@ Run [`npx nvmrc`](https://npmjs.com/nvmrc) to validate an `.nvmrc` file. If that
|
|||||||
|
|
||||||
### Deeper Shell Integration
|
### Deeper Shell Integration
|
||||||
|
|
||||||
You can 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).
|
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.
|
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.
|
||||||
|
|
||||||
|
|||||||
10
install.sh
10
install.sh
@@ -296,17 +296,17 @@ nvm_detect_profile() {
|
|||||||
DETECTED_PROFILE="$HOME/.bash_profile"
|
DETECTED_PROFILE="$HOME/.bash_profile"
|
||||||
fi
|
fi
|
||||||
elif [ "${SHELL#*zsh}" != "$SHELL" ]; then
|
elif [ "${SHELL#*zsh}" != "$SHELL" ]; then
|
||||||
if [ -f "${ZDOTDIR:-${HOME}}/.zshrc" ]; then
|
if [ -f "$HOME/.zshrc" ]; then
|
||||||
DETECTED_PROFILE="${ZDOTDIR:-${HOME}}/.zshrc"
|
DETECTED_PROFILE="$HOME/.zshrc"
|
||||||
elif [ -f "${ZDOTDIR:-${HOME}}/.zprofile" ]; then
|
elif [ -f "$HOME/.zprofile" ]; then
|
||||||
DETECTED_PROFILE="${ZDOTDIR:-${HOME}}/.zprofile"
|
DETECTED_PROFILE="$HOME/.zprofile"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z "$DETECTED_PROFILE" ]; then
|
if [ -z "$DETECTED_PROFILE" ]; then
|
||||||
for EACH_PROFILE in ".profile" ".bashrc" ".bash_profile" ".zprofile" ".zshrc"
|
for EACH_PROFILE in ".profile" ".bashrc" ".bash_profile" ".zprofile" ".zshrc"
|
||||||
do
|
do
|
||||||
if DETECTED_PROFILE="$(nvm_try_profile "${ZDOTDIR:-${HOME}}/${EACH_PROFILE}")"; then
|
if DETECTED_PROFILE="$(nvm_try_profile "${HOME}/${EACH_PROFILE}")"; then
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|||||||
10
nvm.sh
10
nvm.sh
@@ -1667,11 +1667,10 @@ EOF
|
|||||||
LTS="${LTS#lts/}"
|
LTS="${LTS#lts/}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
VERSIONS="$({ command awk -v lts="${LTS-}" -v pattern="${PATTERN:-.*}" '{
|
VERSIONS="$({ command awk -v lts="${LTS-}" '{
|
||||||
if (!$1) { next }
|
if (!$1) { next }
|
||||||
if (lts && $10 ~ /^\-?$/) { next }
|
if (lts && $10 ~ /^\-?$/) { next }
|
||||||
if (lts && lts != "*" && tolower($10) !~ tolower(lts)) { next }
|
if (lts && lts != "*" && tolower($10) !~ tolower(lts)) { next }
|
||||||
if ($1 !~ pattern) { next }
|
|
||||||
if ($10 !~ /^\-?$/) {
|
if ($10 !~ /^\-?$/) {
|
||||||
if ($10 && $10 != prev) {
|
if ($10 && $10 != prev) {
|
||||||
print $1, $10, "*"
|
print $1, $10, "*"
|
||||||
@@ -1683,6 +1682,7 @@ EOF
|
|||||||
}
|
}
|
||||||
prev=$10;
|
prev=$10;
|
||||||
}' \
|
}' \
|
||||||
|
| nvm_grep -w "${PATTERN:-.*}" \
|
||||||
| $SORT_COMMAND; } << EOF
|
| $SORT_COMMAND; } << EOF
|
||||||
$VERSION_LIST
|
$VERSION_LIST
|
||||||
EOF
|
EOF
|
||||||
@@ -4530,7 +4530,11 @@ nvm_supports_xz() {
|
|||||||
if [ "_${NVM_OS}" = '_darwin' ]; then
|
if [ "_${NVM_OS}" = '_darwin' ]; then
|
||||||
local MACOS_VERSION
|
local MACOS_VERSION
|
||||||
MACOS_VERSION="$(sw_vers -productVersion)"
|
MACOS_VERSION="$(sw_vers -productVersion)"
|
||||||
if nvm_version_greater "10.9.0" "${MACOS_VERSION}"; then
|
if tar --version | command grep -q GNU && ! command which xz >/dev/null 2>&1; then
|
||||||
|
# On macOS with GNU tar in use, and no xv on the path, xv-compressed
|
||||||
|
# tarballs aren't supported
|
||||||
|
return 1
|
||||||
|
elif nvm_version_greater "10.9.0" "${MACOS_VERSION}"; then
|
||||||
# macOS 10.8 and earlier doesn't support extracting xz-compressed tarballs with tar
|
# macOS 10.8 and earlier doesn't support extracting xz-compressed tarballs with tar
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -3,16 +3,12 @@
|
|||||||
setup () {
|
setup () {
|
||||||
HOME="."
|
HOME="."
|
||||||
NVM_ENV=testing \. ../../install.sh
|
NVM_ENV=testing \. ../../install.sh
|
||||||
ZDOTDIR="$HOME/zdotdir"
|
|
||||||
mkdir -p zdotdir
|
|
||||||
touch ".bashrc"
|
touch ".bashrc"
|
||||||
touch ".bash_profile"
|
touch ".bash_profile"
|
||||||
touch ".zprofile"
|
touch ".zprofile"
|
||||||
touch ".zshrc"
|
touch ".zshrc"
|
||||||
touch ".profile"
|
touch ".profile"
|
||||||
touch "test_profile"
|
touch "test_profile"
|
||||||
touch "zdotdir/.zshrc"
|
|
||||||
touch "zdotdir/.zprofile"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cleanup () {
|
cleanup () {
|
||||||
@@ -21,9 +17,7 @@ cleanup () {
|
|||||||
unset NVM_DETECT_PROFILE
|
unset NVM_DETECT_PROFILE
|
||||||
unset SHELL
|
unset SHELL
|
||||||
unset -f setup cleanup die
|
unset -f setup cleanup die
|
||||||
unset ZDOTDIR
|
|
||||||
rm -f ".bashrc" ".bash_profile" ".zprofile" ".zshrc" ".profile" "test_profile" > "/dev/null" 2>&1
|
rm -f ".bashrc" ".bash_profile" ".zprofile" ".zshrc" ".profile" "test_profile" > "/dev/null" 2>&1
|
||||||
rm -rf zdotdir 2>&1
|
|
||||||
}
|
}
|
||||||
|
|
||||||
die () { echo "$@" '$NVM_DETECT_PROFILE:' "$NVM_DETECT_PROFILE"; cleanup; exit 1; }
|
die () { echo "$@" '$NVM_DETECT_PROFILE:' "$NVM_DETECT_PROFILE"; cleanup; exit 1; }
|
||||||
@@ -35,54 +29,49 @@ setup
|
|||||||
#
|
#
|
||||||
|
|
||||||
# setting $PROFILE to /dev/null should return no detected profile
|
# setting $PROFILE to /dev/null should return no detected profile
|
||||||
NVM_DETECT_PROFILE="$(PROFILE='/dev/null' nvm_detect_profile)"
|
NVM_DETECT_PROFILE="$(PROFILE='/dev/null'; nvm_detect_profile)"
|
||||||
if [ -n "$NVM_DETECT_PROFILE" ]; then
|
if [ -n "$NVM_DETECT_PROFILE" ]; then
|
||||||
die "nvm_detect_profile still detected a profile even though PROFILE=/dev/null"
|
die "nvm_detect_profile still detected a profile even though PROFILE=/dev/null"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# .bashrc should be detected for bash
|
# .bashrc should be detected for bash
|
||||||
NVM_DETECT_PROFILE="$(SHELL="/bin/bash" PROFILE= nvm_detect_profile)"
|
NVM_DETECT_PROFILE="$(SHELL="/bin/bash"; unset PROFILE; nvm_detect_profile)"
|
||||||
if [ "$NVM_DETECT_PROFILE" != "$HOME/.bashrc" ]; then
|
if [ "$NVM_DETECT_PROFILE" != "$HOME/.bashrc" ]; then
|
||||||
die "nvm_detect_profile didn't pick \$HOME/.bashrc for bash"
|
die "nvm_detect_profile didn't pick \$HOME/.bashrc for bash"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# $PROFILE should override .bashrc profile detection
|
# $PROFILE should override .bashrc profile detection
|
||||||
NVM_DETECT_PROFILE="$(SHELL="/bin/bash" PROFILE="test_profile" nvm_detect_profile)"
|
NVM_DETECT_PROFILE="$(SHELL="/bin/bash"; PROFILE="test_profile"; nvm_detect_profile)"
|
||||||
if [ "$NVM_DETECT_PROFILE" != "test_profile" ]; then
|
if [ "$NVM_DETECT_PROFILE" != "test_profile" ]; then
|
||||||
die "nvm_detect_profile ignored \$PROFILE"
|
die "nvm_detect_profile ignored \$PROFILE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# zdotdir/.zshrc should be detected for zsh
|
|
||||||
NVM_DETECT_PROFILE="$(SHELL="/bin/zsh" PROFILE= nvm_detect_profile)"
|
|
||||||
if [ "$NVM_DETECT_PROFILE" != "$ZDOTDIR/.zshrc" ]; then
|
|
||||||
die "nvm_detect_profile didn't pick \$ZDOTDIR/.zshrc for zsh"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# .zshrc should be detected for zsh
|
# .zshrc should be detected for zsh
|
||||||
NVM_DETECT_PROFILE="$(SHELL="/bin/zsh" PROFILE= ZDOTDIR= nvm_detect_profile)"
|
NVM_DETECT_PROFILE="$(SHELL="/bin/zsh"; unset PROFILE; nvm_detect_profile)"
|
||||||
if [ "$NVM_DETECT_PROFILE" != "$HOME/.zshrc" ]; then
|
if [ "$NVM_DETECT_PROFILE" != "$HOME/.zshrc" ]; then
|
||||||
die "nvm_detect_profile didn't pick \$HOME/.zshrc for zsh"
|
die "nvm_detect_profile didn't pick \$HOME/.zshrc for zsh"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# $PROFILE should override .zshrc profile detection
|
# $PROFILE should override .zshrc profile detection
|
||||||
NVM_DETECT_PROFILE="$(SHELL="/usr/bin/zsh" PROFILE="test_profile" nvm_detect_profile)"
|
NVM_DETECT_PROFILE="$(SHELL="/usr/bin/zsh"; PROFILE="test_profile"; nvm_detect_profile)"
|
||||||
if [ "$NVM_DETECT_PROFILE" != "test_profile" ]; then
|
if [ "$NVM_DETECT_PROFILE" != "test_profile" ]; then
|
||||||
die "nvm_detect_profile ignored \$PROFILE"
|
die "nvm_detect_profile ignored \$PROFILE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Confirm $PROFILE is only returned when it points to a valid file
|
# Confirm $PROFILE is only returned when it points to a valid file
|
||||||
#
|
#
|
||||||
|
|
||||||
# $PROFILE is a valid file
|
# $PROFILE is a valid file
|
||||||
NVM_DETECT_PROFILE="$(PROFILE="test_profile" SHELL= nvm_detect_profile)"
|
NVM_DETECT_PROFILE="$(PROFILE="test_profile"; unset SHELL; nvm_detect_profile)"
|
||||||
if [ "$NVM_DETECT_PROFILE" != "test_profile" ]; then
|
if [ "$NVM_DETECT_PROFILE" != "test_profile" ]; then
|
||||||
die "nvm_detect_profile didn't pick \$PROFILE when it was a valid file"
|
die "nvm_detect_profile didn't pick \$PROFILE when it was a valid file"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# $PROFILE is not a valid file
|
# $PROFILE is not a valid file
|
||||||
rm "test_profile"
|
rm "test_profile"
|
||||||
NVM_DETECT_PROFILE="$(PROFILE="test_profile" nvm_detect_profile)"
|
NVM_DETECT_PROFILE="$(PROFILE="test_profile"; nvm_detect_profile)"
|
||||||
if [ "$NVM_DETECT_PROFILE" = "test_profile" ]; then
|
if [ "$NVM_DETECT_PROFILE" = "test_profile" ]; then
|
||||||
die "nvm_detect_profile picked \$PROFILE when it was an invalid file"
|
die "nvm_detect_profile picked \$PROFILE when it was an invalid file"
|
||||||
fi
|
fi
|
||||||
@@ -94,58 +83,44 @@ fi
|
|||||||
#
|
#
|
||||||
|
|
||||||
# It should favor .profile if file exists
|
# It should favor .profile if file exists
|
||||||
NVM_DETECT_PROFILE="$(SHELL= ZDOTDIR= nvm_detect_profile)"
|
NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
|
||||||
if [ "$NVM_DETECT_PROFILE" != "$HOME/.profile" ]; then
|
if [ "$NVM_DETECT_PROFILE" != "$HOME/.profile" ]; then
|
||||||
die "nvm_detect_profile should have selected .profile; got $NVM_DETECT_PROFILE"
|
die "nvm_detect_profile should have selected .profile"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Otherwise, it should favor .bashrc if file exists
|
# Otherwise, it should favor .bashrc if file exists
|
||||||
rm ".profile"
|
rm ".profile"
|
||||||
NVM_DETECT_PROFILE="$(SHELL= ZDOTDIR= nvm_detect_profile)"
|
NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
|
||||||
if [ "$NVM_DETECT_PROFILE" != "$HOME/.bashrc" ]; then
|
if [ "$NVM_DETECT_PROFILE" != "$HOME/.bashrc" ]; then
|
||||||
die "nvm_detect_profile should have selected .bashrc; got $NVM_DETECT_PROFILE"
|
die "nvm_detect_profile should have selected .bashrc"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Otherwise, it should favor .bash_profile if file exists
|
# Otherwise, it should favor .bash_profile if file exists
|
||||||
rm ".bashrc"
|
rm ".bashrc"
|
||||||
NVM_DETECT_PROFILE="$(SHELL= ZDOTDIR= nvm_detect_profile)"
|
NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
|
||||||
if [ "$NVM_DETECT_PROFILE" != "$HOME/.bash_profile" ]; then
|
if [ "$NVM_DETECT_PROFILE" != "$HOME/.bash_profile" ]; then
|
||||||
die "nvm_detect_profile should have selected .bash_profile; got $NVM_DETECT_PROFILE"
|
die "nvm_detect_profile should have selected .bash_profile"
|
||||||
fi
|
|
||||||
|
|
||||||
# Otherwise, it should favor zdotdir/.zprofile if file exists
|
|
||||||
rm ".bash_profile"
|
|
||||||
NVM_DETECT_PROFILE="$(SHELL= nvm_detect_profile)"
|
|
||||||
if [ "$NVM_DETECT_PROFILE" != "$ZDOTDIR/.zprofile" ]; then
|
|
||||||
die "nvm_detect_profile should have selected zdotdir/.zprofile; got $NVM_DETECT_PROFILE"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Otherwise, it should favor .zprofile if file exists
|
# Otherwise, it should favor .zprofile if file exists
|
||||||
rm "zdotdir/.zprofile"
|
rm ".bash_profile"
|
||||||
NVM_DETECT_PROFILE="$(SHELL= ZDOTDIR= nvm_detect_profile)"
|
NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
|
||||||
if [ "$NVM_DETECT_PROFILE" != "$HOME/.zprofile" ]; then
|
if [ "$NVM_DETECT_PROFILE" != "$HOME/.zprofile" ]; then
|
||||||
die "nvm_detect_profile should have selected .zprofile; got $NVM_DETECT_PROFILE"
|
die "nvm_detect_profile should have selected .zprofile"
|
||||||
fi
|
|
||||||
|
|
||||||
# Otherwise, it should favor zdotdir/.zshrc if file exists
|
|
||||||
rm ".zprofile"
|
|
||||||
NVM_DETECT_PROFILE="$(SHELL= nvm_detect_profile)"
|
|
||||||
if [ "$NVM_DETECT_PROFILE" != "$ZDOTDIR/.zshrc" ]; then
|
|
||||||
die "nvm_detect_profile should have selected zdotdir/.zshrc; got $NVM_DETECT_PROFILE"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Otherwise, it should favor .zshrc if file exists
|
# Otherwise, it should favor .zshrc if file exists
|
||||||
rm "zdotdir/.zshrc"
|
rm ".zprofile"
|
||||||
NVM_DETECT_PROFILE="$(SHELL= ZDOTDIR= nvm_detect_profile)"
|
NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
|
||||||
if [ "$NVM_DETECT_PROFILE" != "$HOME/.zshrc" ]; then
|
if [ "$NVM_DETECT_PROFILE" != "$HOME/.zshrc" ]; then
|
||||||
die "nvm_detect_profile should have selected .zshrc; got $NVM_DETECT_PROFILE"
|
die "nvm_detect_profile should have selected .zshrc"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# It should be empty if none is found
|
# It should be empty if none is found
|
||||||
rm ".zshrc"
|
rm ".zshrc"
|
||||||
NVM_DETECT_PROFILE="$(SHELL= nvm_detect_profile)"
|
NVM_DETECT_PROFILE="$(unset SHELL; nvm_detect_profile)"
|
||||||
if [ ! -z "$NVM_DETECT_PROFILE" ]; then
|
if [ ! -z "$NVM_DETECT_PROFILE" ]; then
|
||||||
die "nvm_detect_profile should have returned an empty value; got $NVM_DETECT_PROFILE"
|
die "nvm_detect_profile should have returned an empty value"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cleanup
|
cleanup
|
||||||
|
|||||||
Reference in New Issue
Block a user