Releases
v0.41.0
Compare
Sorry, something went wrong.
No results found
ljharb
released this
04 Nov 21:25
Immutable
release. Only release title and notes can be modified.
New Stuff
select versions by category: alpha, lts, non-lts, iojs; exclude alphas by default
nvm alias: store --lts and --lts=<name>
record every node version's LTS status
nvm ls-remote: annotate versions with the node alias and local aliases (#3920 )
add nvm_has_italics, to detect terminal italics support via terminfo
Bug Fixes
nvm: treat a bare --only like an empty --only=
nvm_ls_remote, nvm_remote_version: match dots between version components literally (#3982 )
nvm_nvmrc_invalid_msg: respect --silent
nvm_download: pass $NVM_AUTH_HEADER to curl and GNU Wget in a config file, not as an argument
nvm_ls_remote_index_tab, nvm_remote_version, nvm_ls_cached: pass the version pattern to grep with -e
nvm_die_on_prefix: never let a project .npmrc choose which npmrc file --delete-prefix edits
nvm_download_artifact: only put an archive in the cache once its checksum has passed
nvm_normalize_lts, nvm_ls_remote_index_tab: keep untrusted text out of shell arithmetic and LTS aliases
nvm install: keep nvm options after the version out of ./configure (#3981 )
nvm install: apply --alias, --default and --save after every install (#3981 )
nvm install: don't leave NVM_NO_PROGRESS set in the caller's shell
nvm_get_default_packages: ignore CRLF line endings (#3979 )
install.sh: ignore commented-out profile source lines (#3860 )
nvm_print_implicit_alias: keep STABLE bound, and STABLE and UNSTABLE independent of the caller (#3975 )
nvm_ls: treat a version dir with only hidden entries as empty (#3974 )
ls: list versions whose directory is a symlink (#3973 )
nvm_die_on_prefix: check a nonexistent prefix on Windows (#3972 )
install.sh: only write $HOME when $NVM_DIR is inside it (#3962 )
nvm_is_version_or_alias: reject uppercase LTS names in every locale
nvm_process_nvmrc: don't show the content of a symlinked .nvmrc
nvm_write_nvmrc: don't write through a symlinked .nvmrc
nvm_ls: match NVM_DIR literally
nvm use: do not pile up PATH entries in nested sessions (#3959 )
nvm_filter_installed_versions, nvm_filter_lts_versions, nvm_record_lts_status, nvm_get_default_packages: keep backslashes in NVM_DIR paths
nvm_strip_path: preserve literal backslashes in NVM_DIR (#3958 )
nvm_find_up, nvm_find_project_dir: stop at a Windows drive root instead of looping forever (#3968 )
nvm_ls_cached: match dots in the version literally, and ignore a trailing dot (#3961 )
install.sh: nvm_check_global_modules: don't run a Windows npm under WSL (#3966 )
nvm: ignore option variables set by the caller
nvm reinstall-packages: don't print VERSION='' in zsh
nvm_alias, nvm_ls_remote_index_tab, nvm use: return the exit code of a failed check
nvm_print_versions: don't mark N/A as installed
nvm_ls: no blank line before system when nothing is installed
nvm_print_versions: widen the version column for long versions
nvm_ls: match a prerelease only up to a .
nvm_ls: list every installed prerelease, in semver order
nvm uninstall: only remove aliases that point at the uninstalled version
nvm_ls_cached: only match whole version numbers
nvm debug: don't let the shell read stdin when asked for its version
nvm_download: with GNU Wget, follow only same-origin redirects when sending $NVM_AUTH_HEADER
nvm_download: only send $NVM_AUTH_HEADER to URLs under a mirror it applies to
install.sh: don't let a git repository in the current directory affect git ls-remote
nvm_remote_versions: only consult io.js's version list for majors 1 through 3
nvm_remote_versions: place io.js versions by major version, not at the literal v4.0.0
nvm.sh: detect NVM_DIR without $0/$_; fall back to the default install location instead of the working directory
nvm_process_nvmrc_content: reject control characters
nvm_download_artifact, nvm debug: mask credentials in mirror URLs when printing them
nvm_install_binary, nvm_install_source: only use a tarball that nvm_download_artifact put in the cache
nvm_download, nvm_get_latest, install.sh: pass -q to curl first, so .curlrc is ignored again
nvm_is_version_installed: fail when nvm_version_path fails
nvm use, nvm-exec: stop option parsing at --
nvm install: validate an inherited NVM_MAKE_JOBS like -j
nvm_is_natural_num: reject anything but digits
nvm_remote_version: match the requested version as a whole version component
install.sh: a failed script-method download no longer clobbers the install or reports success
nvm_ls: match the version pattern literally
bash_completion: list alias and version names without expanding them
nvm_sanitize_auth_header: strip newlines, so wrapped base64 credentials work
nvm_cd: bypass a user-defined cd function (#3836 )
nvm use: handle regex-special characters in $NVM_DIR (#3939 )
install.sh: start a new line before appending to a profile that does not end with one (#3952 )
Handle filesystem identity when checking path containment (#3921 )
nvm alias: do not drop output from background jobs on bash 3.2
nvm: do not change or export the caller's IFS
nvm install: do not remove the caller's TMPDIR after a failed download
nvm exec/nvm run: do not treat filenames with digits as versions
Refactors
install.sh: check profile lines through one comment-aware helper (#3976 )
Robustness
nvm_nvmrc_invalid_msg: only show an excerpt of the parsed content
install.sh, nvm uninstall: pass the version to grep with -e
Performance
nvm_print_implicit_alias: classify implicit aliases in one awk pass (#3980 )
nvm_is_installed_exact_version: also take the fast path for an exact prerelease
nvm_version_greater, nvm_version_greater_than_or_equal_to: avoid awk where possible (#3949 )
nvm_is_valid_version, nvm_validate_implicit_alias: avoid forks (#3949 )
nvm_echo: use the printf shell builtin under zsh (#3949 )
nvm_get_os: read /etc/os-release instead of forking uname -a (#3949 )
nvm_npmrc_bad_news_bears: scan npmrc files without forking grep (#3949 )
nvm_die_on_prefix: detect the OS only when it is needed (#3949 )
nvm_version: resolve an exact, installed version without nvm_ls (#3949 )
nvm_is_version_installed: check the modern layout's path before the full lookup (#3949 )
nvm_resolve_local_alias: skip nvm_version for an exact, installed version (#3937 )
nvm use: skip re-resolving an exact, installed version (#3937 )
Docs
[readme] cdnvm: let nvm parse .nvmrc, so a symlinked .nvmrc's content is not printed
[readme] Fix a Docker warning from using Docker installation instructions (#3927 )
[readme] explain the misleading npm install error from npm run test/fast (#3944 )
Misc
[meta] Makefile: default NVM_DIR to the checkout when it is not set
[meta] release-notes.sh: replace control characters in commit subjects
Tests
make fast tests pass as root, without sudo, and without a terminal
[actions] TOC: use node/install instead of setup-node
pin --lts and node installs to end-of-life lines, so a new node release can't break them
bash_completion: don't let zsh's compinit wait for an answer
[actions] tests-alpine: time out jobs well before GitHub's 6-hour limit
nvm_download: point the httpbin Authorization check at a configured mirror
nvm_get_arch_unofficial: set NVM_DIR when sourcing nvm.sh in the chroots
nvm install v1 works: get the version from nvm_remote_version, not the ls-remote display
[actions] cache container images, verified against digests looked up live
[actions] pull container images through Google's Docker Hub mirror
[actions] never let an apt install wait on a prompt
[actions] retry apt package installs through Ubuntu mirror outages
add unit coverage for nvm_version_greater_than_or_equal_to (#3942 )
add unit tests for nvm_version_greater_than_or_equal_to (#3941 )
nvm install --reinstall-packages-from: mock the remote version instead of fetching it
[actions] run the fast suite on macOS and WSL too
make the fast suite pass on macOS
[actions] rename windows-npm workflow to windows-nvm, since it tests nvm install
You can’t perform that action at this time.