它是什么
nvm(Node Version Manager)是一个用 Shell 编写的 Node.js 版本管理器,几乎可以在所有 POSIX 兼容的 shell 中运行,包括 bash、zsh、dash、ksh 等。它的作用很直接:让你在同一台机器上安装多个 Node.js 版本,并在需要时随手指令切换,而不必反复卸载重装或手动修改系统路径。
它不像 npx 那样依赖 npm 生态,也不像 Volta 那样使用独立二进制,而是一个纯脚本方案。安装时,它只往你的 shell 配置文件中写入一段 source 逻辑;之后所有操作都由 nvm 函数接管。正因为它轻量、无依赖,所以长期占据 GitHub 上最受欢迎的 Shell 项目之一,star 数已接近十万。
核心功能
- 一键安装与切换版本:执行
nvm install 20即可安装 Node 20,再执行nvm use 18就能立刻切回旧版本,整个过程不需要担心全局路径冲突。 - LTS 与版本别名:支持
--lts、lts/*、node、iojs等写法,方便锁定长期支持版本;也能自定义别名,把常用版本映射成短名称。 - 全局包迁移:安装新版本时,可以把旧版本中的全局包一并迁移过来,避免重新手动安装 eslint、pnpm 等工具。
- .nvmrc 项目级锁定:在仓库根目录放一个
.nvmrc,通过 shell 钩子进入目录时自动切换到项目所需版本,团队协作时版本更统一。 - 镜像与离线支持:可配置 NVM_NODEJS_ORG_MIRROR 指向国内镜像加速下载,也支持从本地缓存离线安装。
- Docker 与 CI 友好:提供在 Docker 镜像和 CI 流水线中安装使用的官方说明,方便构建环境固定 Node 版本。
适用场景
前端或全栈开发者经常同时维护多个项目,各项目的 Node 版本要求各不相同;nvm 让你在同一个终端里快速切换,不必为了旧项目降级整个系统环境。测试人员需要验证某个包在 Node 16、18、20 下的兼容性时,也可以用 nvm 逐版本跑测试。运维人员或 DevOps 场景下,它可以用于在 CI 容器内精确指定构建时所使用的 Node 版本。
上手建议
推荐使用官方安装脚本,安装完成后执行 command -v nvm 确认安装成功;如果输出为空,多半是因为配置文件还没重新加载。国内用户在安装 Node 之前,先设置好镜像环境变量,下载会顺畅很多。日常使用时,优先通过 nvm install --lts 安装长期支持版本。若使用 zsh 或 fish,可以按照 README 的 shell 集成段落配置自动执行 nvm use,减少手动切换。需要注意的是,nvm 只管理 Node 本身,npm 全局包仍需在各版本间单独处理(除了安装时可迁移的那部分)。另外,nvm 与系统包管理器安装的 Node 可能互相干扰,建议只保留一种管理方式。