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 旧版本号 快速迁移。