nvm-sh/nvm(简称nvm)是一款纯Shell脚本实现的Node.js版本管理工具,也是目前社区最主流、使用最广泛的Node版本管理方案,核心解决开发中多Node.js版本共存、切换、安装卸载的核心痛点,让不同项目(如老项目依赖Node16、新项目要求Node20)能在同一台机器上无冲突运行,是前端/Node.js开发者的必备工具。
基础核心信息
1. 仓库地址:GitHub – nvm-sh/nvm
2. 开源协议:MIT协议(完全开源、自由使用,商用/个人项目均可)
3. 支持系统:原生支持Linux、macOS,以及WSL2(Windows子系统Linux版);不原生支持Windows桌面版(Windows用户可使用社区适配的nvm-windows,功能一致,操作相近)
4. 核心依赖:仅需系统自带的Shell(bash/zsh/sh),无额外依赖,轻量极简
5. 最新稳定版:截止2026年2月,最新稳定版为v0.39.7(社区持续维护,迭代稳定)
核心解决的痛点
在没有nvm的情况下,直接安装Node.js会存在以下问题:
1. 系统全局仅能存在一个Node.js版本,不同项目的版本要求冲突时无法解决;
2. 手动卸载/安装Node版本繁琐,且容易残留全局依赖、环境变量,导致系统污染;
3. 安装特定版本(如LTS长期支持版、历史旧版本)需要手动下载安装包,步骤复杂;
4. 全局npm依赖与Node版本绑定,不同版本Node的依赖无法隔离。
而nvm通过将不同Node版本独立隔离存储,实现了版本的一键切换、安装,所有操作均在用户目录下完成(默认~/.nvm),不修改系统全局环境,彻底解决以上问题。
核心功能(极简高效,一行命令搞定)
nvm的所有核心操作均为单行Shell命令,无复杂配置,核心功能包括:
1. 安装任意Node.js版本:支持指定版本号、一键安装LTS长期支持版、安装最新稳定版/最新开发版;
2. 快速切换版本:可切换当前Shell会话的Node版本(临时生效)或系统全局的Node版本(永久生效);
3. 版本管理:列出已安装的所有Node版本、列出远程可安装的所有Node版本、卸载指定版本;
4. 默认版本设置:为系统设置默认Node版本,新终端会话自动加载该版本;
5. 依赖隔离:每个Node版本自带独立的npm/yarn/pnpm,全局依赖与对应Node版本绑定,互不干扰;
6. 轻量无侵入:所有Node版本、配置、依赖均存储在~/.nvm目录,卸载时直接删除该目录即可,无残留。
快速安装(官方推荐方式)
nvm无传统的包管理安装方式(如apt/yum/brew),官方推荐通过curl/wget一键拉取Shell脚本安装,无需手动配置环境变量,步骤如下(Linux/macOS/WSL2通用):
方式1:curl安装(推荐)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
方式2:wget安装
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
安装后生效
安装脚本会自动将nvm的环境变量配置写入~/.bashrc/~/.zshrc/~/.profile,重启终端或执行以下命令手动生效:
# bash用户
source ~/.bashrc
# zsh用户(如Mac自带的zsh)
source ~/.zshrc
验证安装成功
nvm --version
# 输出版本号如 v0.39.7 即安装成功
最常用命令(开发必备,记这几个就够了)
nvm的命令设计极简,核心常用命令仅10个左右,以下是高频使用的命令,直接复制即可执行:
1. 安装Node.js版本
# 安装LTS长期支持版(推荐,生产环境首选)
nvm install --lts
# 安装指定版本(如Node20.10.0,版本号可从官网查询)
nvm install 20.10.0
# 安装最新稳定版
nvm install stable
# 安装最新开发版(不推荐生产使用)
nvm install node
2. 切换Node.js版本
# 切换到指定版本(临时生效,仅当前终端)
nvm use 20.10.0
# 切换到LTS版本
nvm use --lts
# 切换到系统全局默认版本
nvm use default
3. 查看版本信息
# 列出已安装的所有Node版本(*标记当前使用的版本)
nvm ls
# 列出远程可安装的所有Node版本(含LTS/开发版)
nvm ls-remote
# 列出远程可安装的所有LTS版本(精简版)
nvm ls-remote --lts
# 查看当前使用的Node/npm版本
node -v
npm -v
4. 设置默认版本
# 将指定版本设为系统默认版本(新终端自动加载,永久生效)
nvm alias default 20.10.0
# 将LTS版本设为默认版本
nvm alias default lts/*
5. 卸载/删除Node版本
# 卸载指定版本
nvm uninstall 16.20.2
6. 查看nvm帮助
nvm help
# 查看具体命令的帮助(如install)
nvm help install
实用进阶配置(解决国内下载慢、自定义存储)
1. 配置国内镜像(解决Node下载慢的问题,必配)
由于nvm默认从Node.js官方源下载(国外服务器),国内用户下载速度极慢,可配置淘宝Node镜像(npmmirror),临时/永久配置均可:
临时配置(仅当前终端生效)
export NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node
永久配置(所有终端生效,推荐)
将配置写入Shell配置文件,重启终端后永久生效:
# bash用户
echo 'export NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node' >> ~/.bashrc
source ~/.bashrc
# zsh用户
echo 'export NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node' >> ~/.zshrc
source ~/.zshrc
2. 自定义nvm存储目录
nvm默认将Node版本、配置存储在~/.nvm,若想修改到其他目录(如磁盘空间更大的分区),可配置环境变量NVM_DIR:
# 示例:将存储目录设为 ~/data/nvm
echo 'export NVM_DIR="$HOME/data/nvm"' >> ~/.zshrc
source ~/.zshrc
关键特性总结
1. 纯Shell实现:无Node/Java等前置依赖,跨Shell兼容(bash/zsh/sh),轻量到极致;
2. 无系统侵入:所有文件均在用户目录下,不修改系统全局环境,卸载无残留;
3. 版本彻底隔离:每个Node版本独立存储,自带npm,全局依赖互不干扰;
4. 命令极简:所有核心操作均为单行命令,新手易上手,无需复杂配置;
5. 社区主流:GitHub星标超100k,是Node.js官方文档推荐的版本管理工具,社区维护活跃,问题解决及时;
6. 兼容npm/yarn/pnpm:完美支持各类Node包管理工具,无兼容问题。
注意事项
1. Windows桌面版不支持:nvm-sh/nvm仅支持Linux/macOS/WSL2,Windows原生桌面版请使用nvm-windows(非同一仓库,但操作命令基本一致);
2. 安装前卸载系统原有Node:若系统已手动安装过Node.js/npm,需先卸载并清理环境变量,否则会与nvm管理的版本冲突;
3. 全局依赖与版本绑定:nvm管理的每个Node版本都有独立的全局npm依赖,切换版本后需重新安装对应全局依赖(如npm install -g pnpm);
4. 终端生效问题:安装nvm后若执行nvm: command not found,请重启终端或手动执行source命令加载配置文件。
总结
nvm-sh/nvm是Linux/macOS环境下Node.js开发的标配工具,以「轻量、无侵入、极简操作」为核心优势,彻底解决了多Node版本共存的行业痛点,是前端/Node.js开发者的必备开源工具。其社区活跃度高、文档完善、使用门槛极低,无论是新手入门还是企业生产环境,都是Node版本管理的首选方案。
简单来说:用了nvm,再也不用为Node版本冲突头疼了。