人人都会AI编程

2.1 环境搭建与版本管理

更新时间:2026-07-11

一套稳定、可复现的开发环境是后续所有学习与开发的基础。Node.js 的安装本身并不复杂,但版本选择、多项目隔离和跨平台兼容性这些实际问题,往往会导致初学者或团队在协作时踩坑。本节的目标就是帮你一步到位地搭建一个可维护的 Node.js 开发环境,包括安装方式的选择、LTS/Current 版本策略以及灵活的多版本管理方案。

2.1.1 安装 Node.js:三种途径的对比与选择

获取 Node.js 可执行程序的渠道主要有三种,它们各有适用场景。

途径一:官网安装包

打开 nodejs.org,首页即会显示两个主要版本:

  • LTS(Long Term Support):长期支持版,偶数版本号(如 20.x、18.x),经过充分生产验证,稳定性优先,适合绝大多数项目和线上部署。
  • Current:最新特性版,奇数版本号在历史中更常见,但如今的发布策略为每 6 个月大版本,LTS 从偶数版中选定。包含最新实验性功能,适合尝鲜和提前适配。

下载对应操作系统的 .pkg(macOS)或 .msi(Windows)安装程序,双击安装即可。安装程序会自动注册系统环境变量,终端输入 node -vnpm -v 可验证安装成功。

优点:安装简单、提供完整运行时和 npm。
缺点:只能同时存在一个全局版本,当多个项目需要不同 Node.js 版本时,切换成本高。

途径二:包管理器(Homebrew / APT / Chocolatey)

macOS 用户常用 Homebrew:

brew install node

Linux 用户则可使用系统包管理器(如 APT)或 Nodesource 提供的仓库。Windows 用户可通过 Chocolatey:

choco install nodejs

优点:与系统更新流程统一,易于自动化。
缺点:同样受限于单一全局版本,且包管理器中的 Node.js 版本可能滞后于官网发布。

途径三:版本管理器(nvm / nvs / fnm)

这是更推荐的方案,尤其适合需要频繁切换版本、维护多个项目的开发者。版本管理器可以在用户目录下安装多个独立的 Node.js 副本,并通过命令快速切换。最基本的玩法是:

  • 无需管理员权限就能安装不同版本。
  • 每个终端会话可以设定不同 Node.js 版本,甚至可以根据项目下的 .nvmrc.node-version 文件自动切换。

安装建议:如果你刚开始接触 Node.js 或者需要管理多个项目,跳过官网安装直接使用版本管理器,能省去日后大量迁移成本。

2.1.2 版本选择策略:LTS vs Current

Node.js 社区一直有稳定的发布规律,理解这一点对技术选型和项目稳定性至关重要。

  • LTS 版本:从大版本发布起,经历 6 个月活跃维护期后进入 30 个月的长期支持周期(18 个月活跃 LTS + 12 个月维护 LTS)。在此期间只会接收安全修复、重大 Bug 修复,不会引入新特性导致破坏性变更。生产环境必须使用 LTS 版本
  • Current 版本:每隔 6 个月发布的新鲜大版本,包含最新的 V8 引擎、ECMAScript 语法支持和实验性 API。适合个人探索、库的兼容性测试,以及希望提前享受新特性的项目,但线上使用需谨慎。

一个实用的经验法则:

  • 个人学习与开源项目:紧跟 LTS 主线(如 Node.js 20),在保证稳定的同时接触到足够新的语法特性。
  • 团队项目与生产部署:固定某个具体 LTS 小版本(例如 20.11.0),并通过 .nvmrc 或 Docker 镜像锁定,避免自动升级带来的意外。
  • 库维护者:在 CI 中同时测试最新的 LTS 版本和 Current 版本,确保向下兼容。

2.1.3 nvm:最普及的多版本管理工具

nvm(Node Version Manager)是基于 shell 的脚本工具,支持 macOS 和 Linux,Windows 用户可以使用 nvm-windows。它的核心能力是“在一个用户账户下安装、管理、切换多个 Node.js 版本”。

安装 nvm

官方仓库提供 curl/wget 一键安装脚本:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
# 或
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

安装完成后,重启终端或执行 source ~/.bashrc 即可使用。

常用命令

# 查看可安装的 Node.js 版本列表
nvm ls-remote

# 安装最新的 LTS 版本(自动识别)
nvm install --lts

# 安装指定版本
nvm install 20.11.0

# 查看已安装的本地版本
nvm ls

# 切换到某个版本(当前终端会话)
nvm use 20

# 设定默认版本(新开终端自动使用)
nvm alias default 20.11.0

# 直接执行某个版本的命令(不切换版本)
nvm exec 18 node app.js

项目级版本锁定

在项目根目录添加 .nvmrc 文件,内容为版本号(例如 20.11.0),然后在项目目录下执行 nvm use,nvm 就会自动切换到文件指定的版本。配合自动加载脚本,每次进入该项目目录时终端版本会自动切换,极大降低多人协作时的版本冲突。

# ~/.zshrc 或 ~/.bashrc 中添加
autoload -U add-zsh-hook
load-nvmrc() {
  if [[ -f .nvmrc && -r .nvmrc ]]; then
    nvm use
  fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrc

2.1.4 nvs 与 fnm:更轻快的替代方案

nvm 功能虽然完善,但每次启动 shell 都需要加载脚本,可能影响终端启动速度。nvs(Node Version Switcher)和 fnm(Fast Node Manager)是跨平台、性能更优的替代方案。

nvs

nvs 的优势在于跨平台(支持 Windows/macOS/Linux)且基于 Node.js 自身运行,可以全局安装:

npm install -g nvs

切换版本与 nvm 类似,但配置通过环境变量 NVS_HOME 控制,.node-version 文件同样支持自动切换。

fnm(Fast Node Manager)

fnm 用 Rust 编写,速度极快,支持 .node-version.nvmrc 文件,安装使用非常简洁:

# 通过 Homebrew 或 cargo 安装
brew install fnm

# 安装 LTS 版本
fnm install --lts

# 切换版本
fnm use 20

# 设定默认
fnm default 20

fnm 倡导在项目的 .node-version 文件中声明版本,这是更通用的标准(Heroku 等平台也支持)。

如何选择

  • 如果团队大部分用 macOS/Linux 且对启动速度不敏感,nvm 是事实标准,文档丰富。
  • 如果需要 Windows 原生支持或追求极致终端启动速度,fnm 是目前趋势性选择。
  • nvs 兼顾跨平台,也是不错的选择。

2.1.5 验证安装与卸载残留处理

安装完成后,终端输入以下命令验证环境:

node -v   # 应显示 v20.x.x 等版本号
npm -v    # 应显示 10.x.x 等版本号

如果之前通过官网包安装了 Node.js,又安装了 nvm,可能会出现版本混乱(终端显示的是系统级 Node 而不是 nvm 的版本)。此时只需在 shell 配置文件里确保 nvm 的初始化脚本在 PATH 最前面即可。

要卸载旧的系统级 Node.js:

  • macOS:删除 /usr/local/bin/node/usr/local/bin/npm(没有 brew 管理时),或执行 brew uninstall node
  • Windows:在“应用和功能”中卸载。
  • Linux:使用包管理器移除(apt remove nodejs)。

2.1.6 从零启动:一个完整的环境搭建流程

假设你拥有一台新的 macOS 电脑,需要搭建 Node.js 开发环境,推荐的流程如下:

  1. 安装终端与 Shell:升级 bash 到 zsh 或 fish,配置基本别名。
  2. 安装 fnm(以 fnm 为例):
   brew install fnm
   

~/.zshrc 追加:

   eval "$(fnm env --use-on-cd)"
   
  1. 安装 LTS 版 Node.js
   fnm install --lts
   fnm default lts-latest
   
  1. 创建测试项目
   mkdir my-first-app && cd my-first-app
   echo "20" > .node-version   # 或者指定如 20.11.0
   node -v                     # 确认版本已自动切换
   
  1. 初始化 npm 项目
   npm init -y
   

此时 package.json 生成,环境彻底就绪。

一套规范的多版本管理环境不仅能提升个人效率,更是团队协作的润滑剂。它避免了“我本地是好的,怎么到你这就跑不起来”的经典问题,让安装、切换、锁定的每一步都清晰可控。在后续章节中,我们会进一步探索包管理器和模块化基础,将这套环境的能力发挥到极致。