工具信息
nvm(Node Version Manager)是一个按用户、按 shell 生效的 Node.js 版本管理器。它让你在同一台机器上并存多个 Node 版本,用一条命令切换,避免不同项目对运行时版本的要求互相冲突。官方定位很明确:支持任何 POSIX 兼容 shell(sh、dash、ksh、zsh、bash),主要面向 unix、macOS 与 Windows 的 WSL 环境。
核心功能
nvm 本身是一组 shell 函数,通过改写当前 shell 的 PATH 来切换实际生效的 Node 可执行文件:
- 多版本并存:安装多个 Node 版本,互不覆盖。
- 快速切换:
nvm use 22即可切换当前 shell 使用的版本,并同时带出对应的 npm。 - 按项目声明版本:仓库里放一个
.nvmrc,进入目录后一键切换。 - 全局包迁移:安装新版本时可把已安装的全局包迁移过去。
- 镜像与离线支持:可指定 Node 二进制镜像、使用离线安装,并支持默认全局包清单文件。
界面与体验
nvm 没有图形界面,交互全部发生在终端里。它不会生成一个独立的 nvm 可执行文件,而是作为 shell 函数被 source 进来,因此校验安装要用 command -v nvm,which nvm 会返回空。
安装脚本会把一段 export NVM_DIR=... 的片段写入你的 shell 配置文件(~/.bashrc、~/.bash_profile、~/.zshrc 或 ~/.profile);若检测到 XDG_CONFIG_HOME,文件会放在该目录下。这种设计带来一个直观后果:切换版本只影响当前 shell 会话,新开终端会回到默认版本。
完整使用流程
以下步骤与命令取自官方 README(当前发布版本 v0.40.8):
- 前置条件:macOS 需先安装 Xcode 命令行工具,否则安装脚本会失败;若系统没有预编译二进制、需要从源码编译 Node,则要准备 C++ 编译器。
- 安装或更新 nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.8/install.sh | bash # 或 wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.8/install.sh | bash - 校验安装:
若输出为空,重开终端或执行command -v nvmsource ~/.zshrc/source ~/.bashrc。 - 完成一个核心任务——安装并切换版本:
nvm install 24 nvm use 22 node -v - 结果验证:
node -v应输出刚切换的版本号;nvm ls可查看已安装版本列表。 - 进阶:在项目根目录写
.nvmrc(如内容为node或版本号),配合 shell 钩子实现进目录自动切换。
安装脚本默认会尝试自动使用默认版本;若希望延迟到手动nvm use再生效,可在 profile 片段的nvm.sh后加--no-use。
亮点与差异
nvm 的差异点是「不侵入系统 Node」:它把每个版本放在 ~/.nvm 下,通过修改当前 shell 的环境变量生效,不需要 sudo,也不需要管理员权限去替换系统目录。
- 安装与切换都发生在用户目录,卸载即删除
~/.nvm与 profile 片段。 - 支持自定义安装源、目录、profile 与版本(
NVM_SOURCE、NVM_DIR、PROFILE、NODE_VERSION)。 - 官方 README 给出了 Docker 与 CI 场景的可复用写法,包括非交互式 shell 的
BASH_ENV方案。
典型使用场景
- 同时维护多个项目,各自锁定不同 Node 大版本。
- 复现线上问题:临时切到与生产一致的 Node 版本验证行为。
- 在 Docker / CI 中安装并缓存多个 Node 版本。
- 测试新版本兼容性,出问题立即回退。
版本与维护状态
当前 README 与徽章指向 v0.40.8,仓库带有自动化测试与 CII Best Practices 认证徽章,说明仍在持续维护。更新 nvm 的方式与安装相同——重新执行安装脚本即可。
局限与注意
- 不支持 fish:官方明确列出这一限制,并给出 bass、plugin-nvm、nvm.fish 等第三方替代。
- Windows 支持有限:官方建议通过 WSL、Git Bash(MSYS)或 Cygwin 使用;原生 Windows 可用 nvm-windows、nodist、nvs,但这些不由官方维护。
- macOS 安装前置:未装 Xcode 命令行工具会直接失败。
- 版本只对当前 shell 生效:易被误认为「全局切换」,跨会话需依赖默认版本或
.nvmrc。 - FreeBSD 等平台缺少官方预编译二进制,源码编译可能需要打补丁。
常见问题
- 安装后提示 nvm: command not found 怎么办?macOS 自 10.15 起默认 zsh,若无
~/.zshrc需先touch ~/.zshrc再重跑脚本;bash 用户同理创建~/.bash_profile或~/.bashrc。 - 为什么
which nvm查不到?因为 nvm 是 shell 函数而非可执行文件,请用command -v nvm。 - 全局安装包需要 sudo 吗?不需要,用 nvm 时直接
npm install -g;同时要确认~/.npmrc里没有prefix设置。 - Apple Silicon 装不上 Node?官方建议 Node v16 及以上(arm64 Darwin 包自 16.0.0 提供)。
产品主页与下载
官方仓库(产品主页,含完整安装与排错文档):github.com/nvm-sh/nvm;安装脚本:install.sh;项目 Logo 与品牌资源:github.com/nvm-sh/logos;Node 官方站点:nodejs.org。
一句话总结
按用户、按 shell 生效的 Node.js 版本管理器,支持安装多个 Node 版本并快速切换。
本文文字与配图由 AI 生成或辅助整理,内容仅供参考,请以官方资料为准。





