背景
最近折腾服务器拉取 GitHub 项目,我的“程序员强迫症”又犯了—-搞技术,环境必须是独立的! 大家都有这样的洁癖吗?
好了,不废话,直接说重点:为什么非用 NVM 不可?
因为我们开发时经常遇到一个现实难题:老项目依赖 Node 14,新项目非要 Node 20,如果直接系统安装 Node,那简直是给自己挖坑。切换版本、处理权限冲突,简直是噩梦。
在不使用 NVM 的情况下,一个系统通常只能安装一个 Node.js 版本,容易造成以下问题:
| 问题场景 | 使用 NVM 的好处 |
|---|---|
| 不同项目需要不同版本的 Node.js | 可以快速切换所需版本 |
| 系统级安装 Node.js 需要 sudo,导致权限问题 | NVM 将 Node 安装在用户目录,可避免权限冲突 |
| 升级 Node.js 不便 | 任意安装、删除和切换版本,不影响系统环境 |
那NVM是什么?简单说,它就是一个命令行神器,能让你在同一台电脑上,轻松地安装、管理和切换各种 Node.js 版本。从此告别版本冲突的烦恼,把环境搞得明明白白!
安装 NVM
macOS / Linux
执行官方安装脚本:
1 | # 使用 curl |
安装完成后,重新打开终端或执行以下命令使 NVM 生效:
1 | source ~/.bashrc |
基本命令
查看和安装版本
| 命令 | 说明 | 示例 |
|---|---|---|
| nvm ls-remote | 查看所有可安装的 Node.js 版本 | nvm ls-remote |
| nvm ls-remote –lts | 查看所有长期支持 (LTS) 版本 | nvm ls-remote –lts |
nvm install <version> |
安装指定版本 | nvm install 20.11.1 |
| nvm install –lts | 安装最新 LTS 版本 | nvm install –lts |
切换版本
| 命令 | 说明 | 示例 |
|---|---|---|
| nvm ls | 查看本地已安装的版本 | nvm ls |
nvm use <version> |
切换 Node 版本(仅当前会话) | nvm use 20.11.1 |
| nvm use system | 切回系统默认安装的 Node.js | nvm use system |
| nvm current | 查看当前所用版本 | nvm current |
设置默认版本
| 命令 | 说明 | 示例 |
|---|---|---|
nvm alias default <version> |
设置默认 Node.js 版本 | nvm alias default 20.11.1 |
| nvm deactivate | 临时停用 NVM | nvm deactivate |
项目级 Node 版本管理(.nvmrc)
在项目根目录创建 .nvmrc 文件,并写入所需 Node.js 版本:
1 | echo "18.20.0" > .nvmrc |
进入该目录后执行:
1 | nvm use |
NVM 会自动读取 .nvmrc 并切换版本。
常见问题
1. 安装后提示 command not found: nvm
原因:shell 配置文件未加载 NVM 初始化脚本。
解决方法:执行以下任意一条(视你使用的 shell 而定):
1 | source ~/.bashrc |
或关闭终端重新打开。
附录:自动读取 .nvmrc(可选优化)
如果希望每次切换目录时自动应用 .nvmrc 中的版本,可将以下代码加入 ~/.zshrc:
1 | autoload -U add-zsh-hook |
此方式可在项目切换时自动使用正确的 Node.js 版本。
最后的话
至此,我们已经掌握:
- 如何安装 NVM
- 如何切换 Node.js 版本
- 如何为项目指定 Node.js 版本
忘记就不断翻笔记,希望该笔记帮到你。