NVM 通常指的是 Node Version Manager,它是管理和切换 Node.js 版本的必备工具。以下是其核心知识点:
📌 核心概念
- 问题解决者: Node.js 版本更新快,不同项目可能需要不同版本的 Node.js(和配套的 npm)。直接安装多个版本并手动切换极其麻烦且容易冲突。NVM 完美解决了这个问题。
- 版本隔离: 允许你在同一台机器上安装多个独立的 Node.js 版本(包括不同版本对应的 npm)。
- 按需切换: 可以随时在全局或在特定的 Shell 会话 / 项目目录中切换到指定的 Node.js 版本。
📍 核心功能与命令
-
安装 NVM:
- Windows: 需要安装独立的项目
nvm-windows([github.com/coreybutler…] - ⚠️ 注意: 安装前最好卸载系统全局安装的 Node.js,避免潜在冲突。安装后重启终端或运行
source ~/.bashrc(或对应的配置文件) 使 NVM 生效。
- Windows: 需要安装独立的项目
-
安装 Node.js 版本:
-
nvm install <version>:安装指定版本的 Node.js。例如:nvm install 18.18.2:安装精确版本 18.18.2。nvm install 18:安装 18.x 系列的最新版本。nvm install --lts:安装最新的 LTS (长期支持) 版本。nvm install node:安装最新的稳定版 (Current 版本)。
-
首次安装某个版本的 Node 时,会自动安装对应版本的 npm。
-
-
列出可用/已安装版本:
nvm ls-remote:列出所有远程可用的 Node.js 版本列表(非常长)。nvm ls-remote --lts:只列出远程的 LTS 版本。nvm ls:列出本地机器上已安装的所有 Node.js 版本。当前正在使用的版本会用->或*标记出来。
-
切换 Node.js 版本:
-
nvm use <version>:在当前 Shell 会话中切换到指定版本。例如:nvm use 18.18.2nvm use 18nvm use --ltsnvm use system:使用系统全局安装的 Node.js (如果存在且 NVM 配置允许)。
-
nvm alias default <version>:设置一个默认的 Node.js 版本。每次新开 Shell 终端会自动使用这个版本。
-
-
查看当前使用的版本:
nvm current:显示当前 Shell 中正在使用的 Node.js 版本。node -v或npm -v:也可以验证当前生效的 Node/npm 版本。
-
卸载 Node.js 版本:
nvm uninstall <version>:卸载指定的 Node.js 版本及其对应的全局 npm 包(特定于该版本的全局包也会被移除)。
-
设置别名:
-
nvm alias <name> <version>:给一个版本设置一个简短的别名,方便使用。例如:nvm alias default 18.18.2nvm alias project-alpha 16.20.1
-
之后就可以用
nvm use project-alpha来切换。 -
nvm ls会列出所有别名。
-
高级特性/使用场景
-
.nvmrc文件 (自动切换):- 在项目根目录创建一个名为
.nvmrc的文件。 - 文件内容只写你需要的 Node.js 版本号(如
18.18.2,lts/*)。 - 进入该目录或其子目录时,运行
nvm use(不加参数)。NVM 会自动读取.nvmrc文件并切换到指定的版本。 - 非常适合于团队协作和自动化脚本,确保每个人都使用项目要求的正确 Node 版本。
- 在项目根目录创建一个名为
-
指定架构:
- 在安装命令后加
-arch参数可以指定安装 32 位还是 64 位版本(主要在 Windows 上有意义),如nvm install 14 --arch=64。
- 在安装命令后加
-
代理设置:
- 如果网络访问需要代理,可以在安装或切换前设置环境变量
NVM_NODEJS_ORG_MIRROR指向国内镜像源(如淘宝源https://npm.taobao.org/mirrors/node/),加速下载。
- 如果网络访问需要代理,可以在安装或切换前设置环境变量
-
全局包管理:
- 使用
npm install -g <package>安装的全局包是特定于当前激活的 Node.js 版本的。切换到另一个 Node 版本后,之前版本安装的全局包不可用(需要在新版本下重新安装)。这保证了环境的独立性。
- 使用
✅ 使用场景
- 同时维护多个需要不同 Node 版本的项目。
- 测试你的代码在不同 Node 版本下的兼容性。
- 尝试新版本的 Node.js 特性,同时保留稳定版本用于生产工作。
- 确保本地开发环境与服务端运行环境(生产/测试)的 Node 版本一致。
- 教学或演示,需要快速切换不同的 Node 环境。
⚠️ 重要注意事项
- Windows 是
nvm-windows: Linux/macOS 的 NVM 是纯 Shell 脚本,Windows 的nvm-windows是一个独立的程序,行为略有差异(命令、路径管理)。 - 权限问题: 安装 Node 版本和全局包时,尽量避免使用
sudo。NVM 将文件安装在你的用户目录下,拥有用户权限即可。使用sudo可能导致权限混乱。如果出现权限问题,检查 NVM 文件夹的所有权。 - 环境变量: NVM 通过修改你的 PATH 环境变量来工作。确保安装脚本正确修改了你的 Shell 配置文件。如果你的 PATH 设置有问题(如有其他 Node 路径在前面),切换可能不生效。
- Shell 兼容性: 确保你使用的是 NVM 支持的 Shell(如 bash, zsh)。
- 卸载旧全局 Node: 在安装 NVM 之前,强烈建议卸载通过其他方式(如官网安装包、系统包管理器)安装的全局 Node.js,避免混淆和路径冲突。
- 配置文件加载: 修改了 Shell 配置文件后,需要
source它(如source ~/.zshrc)或重启终端才能生效。
📣 总结
NVM 是 Node.js 开发者管理多版本环境的瑞士军刀🔧。它通过隔离不同版本的 Node.js 和 npm,以及提供便捷的切换命令,极大地简化了开发和测试工作流,避免了版本冲突的烦恼。 掌握安装、切换、.nvmrc 等核心用法是高效使用 Node.js 的基础。