Node.js 是基于 Chrome V8 引擎的 JavaScript 运行时,广泛用于 Web 后端、前端工具链(Webpack、Vite 等)、API 服务和命令行工具。在搬瓦工 VPS 上部署 Node.js 项目时,推荐使用 nvm(Node Version Manager)来管理多版本,既能随时切换,又不会污染系统环境。本文介绍 nvm 安装、版本管理、npm/yarn 使用及全局包管理。
本文要点
- 为什么推荐用 nvm 而非系统包管理器
- nvm 安装与常用命令
- 安装指定版本 Node.js、切换版本
- npm 与 yarn 基础用法
- 全局包管理与 PATH 注意事项
安装方式对比
| 安装方式 | 优点 | 缺点 |
|---|---|---|
| nvm | 多版本管理,切换方便,不污染系统 | 需要加载 shell 配置 |
| apt/yum 系统包 | 简单直接 | 版本旧,升级麻烦 |
| NodeSource 官方源 | 版本较新 | 单版本,切换繁琐 |
| n(Node 版本管理器) | 轻量 | 不支持非标准版本 |
对于搬瓦工 VPS 上的开发和部署场景,nvm 是最推荐的方案。
安装 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash安装完成后,脚本会自动将配置写入 ~/.bashrc(或 ~/.zshrc)。执行以下命令使其立即生效:
source ~/.bashrc
nvm --version # 应输出版本号,如 0.40.3脚本地址与版本号请以官方为准
nvm 版本号会更新,建议访问 github.com/nvm-sh/nvm 获取最新安装命令。
安装 Node.js
安装 LTS(长期支持)版本
nvm install --lts
nvm use --lts
node --version # 验证版本安装指定版本
nvm install 20 # 安装 Node.js 20.x(当前 LTS)
nvm install 18 # 安装 Node.js 18.x
nvm install 22 # 安装 Node.js 22.x(最新 LTS)版本管理
nvm ls # 列出本地已安装的所有版本
nvm ls-remote # 列出可安装的远端版本
nvm use 20 # 切换到 Node.js 20
nvm alias default 20 # 设置默认版本(新 shell 自动使用)
nvm current # 查看当前使用的版本npm 基础用法
npm 随 Node.js 一起安装,是默认的包管理器:
npm -v # 查看 npm 版本
npm init -y # 初始化 package.json
npm install express # 安装依赖(本地)
npm install -g pm2 # 全局安装
npm list -g # 列出全局包
npm update # 更新依赖安装 Yarn(可选)
Yarn 是 Meta 开发的 npm 替代品,在 monorepo 场景和速度上有优势:
npm install -g yarn
yarn --version
yarn init -y
yarn add express
yarn global add pm2使用 PM2 管理 Node.js 进程
PM2 是 Node.js 最常用的进程管理器,支持守护进程、日志、自动重启:
npm install -g pm2
pm2 start app.js --name myapp # 启动应用
pm2 list # 查看状态
pm2 logs myapp # 查看日志
pm2 restart myapp # 重启
pm2 startup && pm2 save # 设置开机自启推荐生产环境使用 PM2
PM2 能确保 Node.js 应用崩溃后自动重启、开机自动启动,是生产部署的标配。
小结
- nvm 是管理 Node.js 多版本的最佳方案
- source ~/.bashrc 使 nvm 命令在当前 shell 立即生效
- nvm alias default 设置新 shell 默认版本
- PM2 负责进程守护和开机自启,生产环境必备
常见问题
nvm 安装后 node 命令找不到?
执行 source ~/.bashrc 使配置生效,或开一个新的 SSH 会话。如果仍然不行,检查 ~/.bashrc 末尾是否有 nvm 的初始化代码。
如何为不同项目使用不同 Node.js 版本?
在项目根目录创建 .nvmrc 文件,写入版本号(如 20),进入目录后执行 nvm use 即自动切换。
全局安装的包(-g)在切换版本后不见了?
nvm 的全局包是分版本存储的,切换版本后需要重新安装。可用 nvm reinstall-packages 旧版本号 快速迁移。