反馈问题

本页章节 选择要查看的部分

nvm

按用户、按 shell 生效的 Node.js 版本管理器,支持安装多个 Node 版本并快速切换。

开发工具200更新日期 2026/10/21 16:08:17

工具信息

支持平台macOS / Linux / WSL
版本v0.40.8
收录时间2026/10/17 12:24:15

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):

  1. 前置条件:macOS 需先安装 Xcode 命令行工具,否则安装脚本会失败;若系统没有预编译二进制、需要从源码编译 Node,则要准备 C++ 编译器。
  2. 安装或更新 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
  3. 校验安装:
    command -v nvm
    若输出为空,重开终端或执行 source ~/.zshrc / source ~/.bashrc。
  4. 完成一个核心任务——安装并切换版本:
    nvm install 24
    nvm use 22
    node -v
  5. 结果验证:node -v 应输出刚切换的版本号;nvm ls 可查看已安装版本列表。
  6. 进阶:在项目根目录写 .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 生成或辅助整理,内容仅供参考,请以官方资料为准。