nvm-sh/nvm纯Shell脚本实现的Node.js版本管理工具

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版本冲突头疼了