Mindket

nvm Node 版本管理器

新上架第 2 版 · 更新于
星标96k

概览

nvm-sh 做的免费 shell 脚本,能在同一台电脑上并排安装多个版本的 Node.js,并在每个 shell 里切换。安装说明涵盖 Linux、macOS、通过 WSL 的 Windows、Docker、Alpine 和 .nvmrc 文件。

nvm Node 版本管理器 是一款 GitHub 上的开源项目,属于开发类,由 Mindket 上架。可免费获取。当前为第 2 版,最近更新于 。按它的 README 从 GitHub 安装。Mindket 的设置说明可在你的 Mindket 账户获取,以 zip 压缩包下载。

速览

用在
  • Linux:用 curl 或 wget 运行安装脚本,或者用 Git 安装
  • macOS:同一个脚本,要先装好 Xcode 命令行工具
  • Windows:通过 WSL,README 还说它应该也能在 Git Bash 或 Cygwin 里用
  • Docker 和 CI 任务:设置 BASH_ENV,或者用 README 里给 CI/CD 任务的 Dockerfile
先运行
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.8/install.sh | bash

平台

Linux操作系统
macOS操作系统
Windows操作系统
Docker容器

关于

它是什么

nvm 是 Node.js 的版本管理器。它是一个 shell 脚本,按用户安装、按 shell 使用,所以每个终端都能用不同的 Node.js 版本,而不碰系统里那一份。README 说它能在任何符合 POSIX 的 shell(sh、dash、ksh、zsh 和 bash)上运行,平台包括 unix、macOS 和 Windows WSL。

  1. 安装脚本把 nvm 放进 ~/.nvm,并写入你的配置文件
  2. nvm install 22 取回那个版本的 Node.js
  3. nvm use 22 让当前 shell 的 PATH 指向它
  4. .nvmrc 文件写明项目需要的版本
  5. 不带版本的 nvm use 会读这个文件

适合谁

同时做几个 Node.js 项目、每个项目要不同版本的开发者。要在旧版和新版 Node.js 上测试库的维护者,以及构建 Docker 镜像或 CI 任务的人,也能用上。在 WSL、Git Bash 和 Cygwin 之外的 Windows 上别用它。对此 README 指向 nvm-windows、nodist 和 nvs,并说 nvm 团队既不支持也不开发它们。

谁在用,怎么用
行业谁在用怎么用例子
网页开发手上有几个 Node.js 项目的开发者为每个项目装好对应版本,用 .nvmrc 文件切换一位开发者在项目文件夹里运行 nvm use,shell 就切到它的 .nvmrc 写的版本。
开源库要支持多个 Node.js 版本的维护者用 nvm exec 在不同版本下运行同一条命令一位维护者像 README 那样运行 nvm exec 4.2 node --version,再换一个版本重复一遍。
运维和 CI构建镜像和 CI 任务的工程师在 Dockerfile 里安装 nvm,把 Node.js 版本作为构建参数传入一位工程师用 --build-arg NODE_VERSION=19 构建 README 里的 CI Dockerfile,得到一个跑在那个版本上的镜像。
支持和测试要在报告者的版本上复现问题的人在当前版本旁边装上那个确切版本,在那里运行出问题的命令一位测试人员用 nvm install 14.7.0 装上 14.7.0,在它下面运行出问题的脚本,然后切回去。

用在哪里

nvm 在符合 POSIX 的 shell 里、于下面这些平台上运行,安装说明给每个平台写了一页,命令都照抄制作者的 README。

  • Linux:用 curl 或 wget 运行安装脚本,或者用 Git 安装
  • macOS:同一个脚本,要先装好 Xcode 命令行工具
  • Windows:通过 WSL,README 还说它应该也能在 Git Bash 或 Cygwin 里用
  • Docker 和 CI 任务:设置 BASH_ENV,或者用 README 里给 CI/CD 任务的 Dockerfile
  • Alpine Linux:先装额外的软件包,没有 musl 二进制文件时要从源码构建
  • Shell:sh、dash、ksh、zsh 和 bash。fish 不受支持,README 列出了别人做的替代品

如何设置

点“获取”会把一个装有 Mindket 安装说明的 zip 压缩包存进你的下载文件夹,里面按制作者的 README,给每个平台写了一页。安装脚本做了大部分工作。

先准备好这些
需要说明
bash安装脚本只能在 bash 下运行(否则 install.sh 会退出)。装好之后,nvm 可以在 sh、dash、ksh、zsh 或 bash 里运行
curl、wget 或 gitREADME 说安装程序用哪个能用的就用哪个,git 需要 v1.7.10 或更高版本
shell 配置文件~/.bashrc、~/.bash_profile、~/.zshrc 或 ~/.profile。Mac 上这个文件可能还不存在,README 说用 touch 创建
C++ 编译器只有某个版本在你的系统上没有二进制文件,nvm 要从源码构建时才需要
账号或密钥README 的安装步骤不要求
  1. 用 curl 或 wget 运行安装脚本。
  2. 关掉终端再打开一个新的,或者 source 你的配置文件。
  3. 运行 command -v nvm,应该会输出 nvm。
  4. 用 nvm install 安装一个 Node.js 版本。
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.8/install.sh | bash

这条命令写的是 v0.40.8,也就是写这份说明时 README 用的版本。请用它现在写的那个。脚本会把 nvm 放进 ~/.nvm,有 git 就用 git,没有就下载,并把 source 行加到它找到的配置文件里。如果它选错了文件,就把 PROFILE 变量设成正确的路径,再运行一遍。

command -v nvm

如何使用

安装一个版本,切换过去,再为新 shell 设好默认版本。README 说你装的第一个版本会成为默认版本。

nvm install node
nvm install 14.7.0
nvm use node
nvm ls
nvm alias default node

第一行装最新版本,第二行装那个确切的版本,所以新旧两个版本可以并排放在同一台机器上。nvm use 改变的是你运行它的那个 shell 里的 PATH,nvm ls 列出你已有的版本。新开的 shell 从 default 别名开始。对一个项目,把版本写进 .nvmrc 文件,这样不带版本的 nvm use 会读它,nvm install 和 nvm which 也一样。

示例

你有几个项目,分别用 Node.js 24、22 和 20。这是 README 的第一个例子。nvm use 只能切换到你已经装好的版本,所以 22 和 20 要先装好:

nvm install 24
node -v
nvm use 22
node -v
nvm use 20
node -v

每个 node -v 会打印你刚切换到的版本。README 的示例输出里,每次安装和切换之后还有一行 Now using node,带着 node 和 npm 的版本。

新手与专家

新手:一个项目可能需要和你机器上不同的 Node.js。nvm 把每个版本放在 ~/.nvm 下它自己的文件夹里,并改变你的 shell 先找到哪一个。nvm 命令是你的 shell 加载的一个函数,不是 PATH 上的程序,所以像 README 说的那样,which nvm 不管用。请改用 command -v nvm。装完之后关掉终端,再开一个新的。在那之前,这个命令可能找不到。README 说用了 nvm 之后,用 npm -g 全局安装模块不需要 sudo。

专家:特殊别名(node、iojs、stable、unstable、current)可用于 nvm install、nvm use、nvm run、nvm exec 和 nvm which。LTS 名称(--lts、lts/*、lts/argon)可用于 install、uninstall、use、exec、run、ls-remote 和 version-remote。nvm install --lts、带 lts/* 的 nvm use,以及 .nvmrc 里写 lts/* 的一行,都会跟着最新的 LTS。每个挑选版本的命令都接受 --only=,可选类别是 alpha、lts、non-lts 和 iojs,NVM_ONLY 设的是默认值。给 nvm install 加上 --reinstall-packages-from=current,会在新版本上重新安装你的全局包,例如 README 的 nvm install --reinstall-packages-from=current 'lts/*'。

NVM_NODEJS_ORG_MIRROR 和 NVM_IOJS_ORG_MIRROR 让 nvm 指向二进制文件的镜像。NVM_AUTH_HEADER 把 Authorization 头只发给镜像,不发给其他主机,但 README 说 BusyBox 的 wget 会把它带到镜像重定向去的任何地方。镜像把下载转给别的主机时,README 建议用 curl。NVM_DIR 里的 default-packages 文件列出每个新版本都要装的包,一行一个名字。你可以加上任何 npm 在命令行里会接受的包参数。nvm install -s 从源码构建,把 NVM_NO_SOURCE_FALLBACK 设为 1,缺少二进制文件时就会报错,而不是悄悄改成源码构建。每个版本一把锁,防止两个 shell 同时安装同一个版本。

注意事项

nvm 按用户安装,在你自己的 shell 里运行,但它的安装步骤会写你的配置文件,还会从网络取文件。

  • 配置文件:安装脚本会把 source 行追加到它找到的配置文件里,并给 bash 或 zsh 的配置文件追加一行 bash_completion。PROFILE=/dev/null 能让它不去编辑配置文件
  • 下载:nvm 从 nodejs.org 取 Node.js,或者从你设的镜像取。README 的示例安装输出里有一步校验和检查,先是 Computing checksum with sha256sum,然后是 Checksums matched
  • 凭据:用 curl(nvm 优先用它)或 GNU Wget 时,NVM_AUTH_HEADER 只发给镜像的网址。README 说 BusyBox 的 wget 会把它带到镜像重定向去的地方。带凭据的镜像网址,nvm 打印时会把凭据遮成 ***@
  • 从源码构建:没有二进制文件时,nvm 会编译 Node.js,这很慢,还需要 C++ 工具链
  • 一个用户:nvm 只对安装它的那个账号可用,所以这台机器上的其他用户看不到它
  • 不受支持:README 说通过 Homebrew 安装和 fish shell 都不受支持,它列出的那些 Windows 工具,nvm 团队也不支持。只有最新的 nvm 版本受支持
  • 会冲突的设置:~/.npmrc 里的 prefix、NPM_CONFIG_PREFIX 和 PREFIX 变量,以及 set -e 会引起问题
  • 卸载:README 给了手动步骤。运行 nvm unload,删掉安装目录,再把 nvm 的几行从配置文件里去掉
  • 许可证:MIT。LICENSE.md 写的是 Tim Caswell(2010)和 Jordan Harband(2014),README 的版权声明写的是 OpenJS Foundation 和 nvm 贡献者

README 和文件

README

nvm:安装说明

这个工具包里只有安装说明,由 Mindket 编写。nvm 本身、它的安装脚本和它的 shell 文件都来自制作者的仓库:https://github.com/nvm-sh/nvm

这些说明不是 nvm 项目写的,也没有得到它的认可。GitHub 上的描述是“Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions.”,意思是:Node 版本管理器,一个符合 POSIX 的 bash 脚本,用来管理多个同时可用的 node.js 版本。README 说:“nvm allows you to quickly install and use different versions of node via the command line.”,意思是:nvm 让你通过命令行快速安装并使用不同版本的 node。

许可证:MIT。LICENSE.md 文件(https://github.com/nvm-sh/nvm/blob/master/LICENSE.md)写的是“The MIT License (MIT)”、“Copyright (c) 2010 Tim Caswell”和“Copyright (c) 2014 Jordan Harband”。README 的版权声明写的是“Copyright OpenJS Foundation and nvm contributors. All rights reserved.”,并说 OpenJS Foundation 拥有注册商标。

README 说只有最新版本的 nvm 受支持。它的命令里写着一个发布标签(写这份说明时是 v0.40.8)。请用你读 README 时它写的那个标签。

会安装什么

  • 安装脚本把 nvm 放进 ~/.nvm,设置了 $XDG_CONFIG_HOME 时放进 $XDG_CONFIG_HOME/nvm。有 git 就克隆仓库,没有 git,install.sh 用 curl 或 wget 下载 nvm.sh、nvm-exec 和 bash_completion。来源见 https://github.com/nvm-sh/nvm/blob/master/README.md(Install & Update Script,Additional Notes)
  • 你的 shell 配置文件(~/.bashrc、~/.bash_profile、~/.zshrc、~/.zprofile 或 ~/.profile,install.sh 也会检查 ~/.zprofile)里的 source 行。安装脚本(https://github.com/nvm-sh/nvm/blob/v0.40.8/install.sh)还会给 bash 或 zsh 的配置文件追加一行加载 bash_completion 的命令。
  • 你之后安装的每个 Node.js 版本,放在 ~/.nvm/versions/node/ 下。来源见 README.md(Important Notes)
  • nvm 是一个被 source 进来的 shell 函数,不是可执行文件。README 说 which nvm 不管用,所以请用 command -v nvm 检查。

事先需要准备

  • 用 bash 运行安装脚本:在别的 shell 下,install.sh 会报错退出。装好之后,nvm 能在任何符合 POSIX 的 shell 里运行,README 列出的是 sh、dash、ksh、zsh 和 bash。
  • 在 macOS 上,运行安装脚本之前先装好 Xcode 命令行工具。README 说没有它们脚本会失败,install.sh 会提示运行 xcode-select --install。
  • git、curl 或 wget。README 说安装程序用哪个能用的就用哪个。它的 Git 安装路线需要 git v1.7.10 或更高版本。
  • 一个 C++ 编译器,只有某个 Node.js 版本在你的平台上没有预编译的二进制文件、nvm 要从源码构建它时才需要。README 提到 macOS 上用 Xcode,Debian 和 Ubuntu 上用 build-essential 和 libssl-dev 软件包。
  • 按 README 的说法不受支持的:fish shell 和用 Homebrew 安装。在 Windows 上,README 说 nvm 应该能通过 WSL、Git Bash(MSYS)或 Cygwin 运行,此外它列出 nvm-windows、nodist 和 nvs,并说 nvm 团队既不支持也不开发它们。见 setup/windows.md、setup/nvmrc-and-shells.md 和 setup/macos.md。

README 的安装步骤不要求账号或密钥。

主要安装命令

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.8/install.sh | bash

来源见 https://github.com/nvm-sh/nvm/blob/master/README.md(Install & Update Script)

各平台的说明

  • setup/linux.md
  • setup/macos.md
  • setup/windows.md:WSL、Git Bash 和 Cygwin,以及 README 列出的替代品
  • setup/docker-and-ci.md
  • setup/alpine-linux.md
  • setup/commands.md:README 记录的命令和环境变量
  • setup/nvmrc-and-shells.md:.nvmrc,以及 bash、zsh 和 fish 里的自动切换(bash 补全在 setup/commands.md 里)
  • setup/mirrors-and-other-platforms.md:镜像、授权头,以及没有官方二进制文件的平台

更新或卸载

更新的话,README 说再运行一次安装脚本,命令和安装时的一样。对于用 git 手动升级(需要 git v1.7.10 或更高版本),它给了下面这几行,它们自己会切换到 $NVM_DIR:

(
  cd "$NVM_DIR"
  git fetch --tags origin
  git checkout `git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1)`
) && \. "$NVM_DIR/nvm.sh"

要移除 nvm,README 给了下面这几行。先卸载 nvm,并删除安装目录:

nvm_dir="${NVM_DIR:-~/.nvm}"
nvm unload
rm -rf "$nvm_dir"

然后编辑 ~/.bashrc(或你的其他 shell 配置文件),把下面这几行去掉:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[[ -r $NVM_DIR/bash_completion ]] && \. $NVM_DIR/bash_completion

安装脚本自己(install.sh)写入的补全行是下面这种形式,所以请删掉你的配置文件里有的那一种:

[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

来源见 https://github.com/nvm-sh/nvm/blob/master/README.md(Install & Update Script,Manual Upgrade,Uninstalling / Removal)

来源

文件
README.md  5 KB
setup/alpine-linux.md  3 KB
setup/commands.md  11 KB
setup/docker-and-ci.md  3 KB
setup/linux.md  5 KB
setup/macos.md  6 KB
setup/mirrors-and-other-platforms.md  4 KB
setup/nvmrc-and-shells.md  8 KB
setup/windows.md  3 KB

9 个文件,共 49 KB,以 zip 压缩包下载。

更新内容

  • 第 2 版 · 2026-11-09

    Updated by Mindket to the current version of this kit.

  • 第 1 版 · 2026-11-03

评价

还没有评分

写评价

还没有评价。

大家怎么说

Hacker News、Bluesky、X、Reddit、Facebook 和 YouTube 上提到这个项目的帖子和评论,来自每周一次的搜索和 Trendshift。它们不是 Mindket 写的,也未经核实,点开即可在原帖处阅读。

abejfehrLife is too short for a slow terminalThis wasn't an option for us because as an org we used their recommended hook (1) to automatically change node versions when switching directories, but it effectively undoes the lazy loading. With mise you get the behaviour of automatically switching when you change directories effectively for…Jordan Harbandnvm v0.41.0 is out! New: --only=alpha,lts,non-lts,iojs to pick versions by category (alphas hidden by default), --lts aliases, annotated ls-remote. Plus 59 bug fixes and 7 security fixes, 25 of which were found and fixed with help from @anthropic.com's OSS Scanner. github.com/nvm-sh/nvm/r...22 赞@devmoonpynvm's Oct 29 advisory: untrusted version strings can inject sed commands (shell execution with GNU sed). Certain .nvmrc auto-switch hooks expose this on directory entry; plain `nvm use` is unaffected. Upgrade to 0.40.6+. https://t.co/GznK44KANa__MatrixMan__Show HN: Vet – A tool for safely running remote shell scriptsI'm glad to see that I'm not the only person worried about this. It's a pretty glaring bit of attack surface if you ask me. I chuckled when I saw you used nvm as an example in your readme. I've pestered nvm about this sort of thing in the past (https://github.com/nvm-sh/nvm/issues/3349). I'm a…Jordan Harbandnvm.sh v0.40.8 is out, fixing a path traversal vuln and a number of bugs - cve.org/CVERecord?id... - github.com/nvm-sh/nvm/r...4 赞@reed_florenNVM — swaps between Node versions in a single terminal with one POSIX-compliant script so your team never breaks a build because someone forgot to upgrade 🚀 https://t.co/x07CBqoYehivewonyoungAnyone can push updates to the doge.gov websiteAre they just running shell scripts off the public web for deploying federal gov sites that are targeted by nation states? From the docker file: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.shEvangeline Rome 🌵🦎🌱🐢🐍🐸 🥦I had a big delay spawning Bash every time because of github.com/nvm-sh/nvm A giant, ugly pile of bash1 赞 · 1 条回复@vintcessunNode 项目一多,版本冲突到底该谁管?nvm 把这摊麻烦收拾得很干净。 https://t.co/b6UrHjmLRm 它按用户、按 Shell 隔离 Node 版本,用 .nvmrc 固化项目要求,切换时直接调整环境路径;并发安装还有锁和原子替换,避免版本目录被写坏。难得的是把开发机上的脏活做稳了。Fish 不原生支持,CI 的非交互 Shell 也要额外加载配置。timrichardMako – fast, production-grade web bundler based on RustI followed the standard nvm install process, to get it loaded from my .zshrc I noticed a second or two in lag between launching the terminal and getting a shell prompt. Commenting out the nvm load as a test removed the delay. I installed fnm, aliased it to be nvm, and everything is snappy. Also…Jeroenneman 👨🏻💻 🇪🇺For those with nodejs #Node2Shell - if nvm not installed: curl -o- raw.githubusercontent.com/nvm-sh/nvm/v... | bash exit -> back in - nvm -v - nvm install 22.23.4 (or any patched version) --reinstall-packages-from=current - validate node version: node -v1 条回复@ljharbhttps://t.co/apjiDcq0Vs v0.40.5 is out, with some CVE fixes: https://t.co/h0bHtPciCP Be sure to update!

搜索日期

Mindket 的更多商品

查看 Mindket 的全部商品

anaksor-ocr

Sokheng · 工具包

这个模型从文档、收据和路牌照片里读取高棉语和英语文字,用一个检测器找文本行,再用识别器读每一行。适合需要在 Python 里做高棉语 OCR 的开发者。

新上架

Qwen2.5-7B-Instruct-GGUF

Qwen · 工具包

Qwen2.5-7B-Instruct 的 GGUF 文件,提供八种量化大小,可通过 llama.cpp 在本地聊天。适合想在自己电脑上用 7.6B 强力模型、又不想搭 Python 环境的人。

新上架

ACE-Step 1.5 XL SFT

ACE-Step · 工具包

用 4B 扩散解码器根据文字生成音乐,50 步并带引导控制,音频质量高于基础版。适合拥有 12 GB 或更多显存 GPU 的创作者。

新上架

开发类的相似商品

查看开发类的全部商品

Claude Code Skills & Plugins

alirezarezvani · 技能

为 Claude Code 和其他编程智能体提供 411 个现成技能,按角色分组,从工程、产品到营销、财务和合规。以插件方式安装。适合开发者和业务团队。

新上架29.8k

buzz

block · 工具包

可自行托管的工作空间,人和 AI 智能体在同样的房间里协作,基于 Nostr 中继,把每个动作记录为签名事件。适合想自己运行中继的团队。

新上架37.3k

plannotator

backnotprop · 工具包

把你的 AI 编程智能体的计划、规格和代码改动在浏览器里打开,让你加批注或评论,并把反馈直接发回给智能体。

新上架10.5k