全部文章

Node.js 生态工具链

Node.js 安装与版本管理(fnm)、pnpm 包管理器、Bun 运行时完整指南

目录 26 节

Node.js 生态工具链

Node 生态真正让人容易混乱的地方,不是工具不够,而是选择太多:Node 版本管理器、包管理器、运行时、镜像、锁文件、workspace 都可能混在一起。更稳的做法是先明确“谁负责版本、谁负责装包、谁负责运行”。

推荐理解方式

  • Node.js:运行时基础
  • fnm / nvm / Volta / mise:版本管理
  • npm / pnpm / yarn / bun:包管理与脚本入口
  • Bun:既能做运行时,也能做包管理器

推荐选择顺序

  1. 先决定 Node 版本管理器
  2. 再决定包管理器
  3. 最后再决定项目是否真的要用 Bun 作为运行时

如果一个团队没有统一这三件事,后面几乎一定会遇到环境漂移问题。

Node.js 安装

直接安装

nodejs.org 下载 LTS 版本,或使用 winget:

winget install OpenJS.NodeJS.LTS

验证:

node --version
npm --version

对新机器来说,先把 LTS 跑稳通常比追最新版本更重要。

使用 fnm 管理多版本(推荐)

fnm 是一个用 Rust 编写的快速 Node.js 版本管理器。

winget install Schniz.fnm

$PROFILE 中添加:

fnm env --use-on-cd --shell powershell | Out-String | Invoke-Expression

常用命令:

fnm install 22          # 安装指定版本
fnm use 22              # 切换版本
fnm default 22          # 设置默认版本
fnm list                # 查看已安装版本
fnm list-remote         # 查看可用版本

fnm 的优势是轻和快,适合个人开发机或需要频繁切换版本的场景。

使用 nvm-windows

nvm-windows 是 Windows 上经典的 Node.js 版本管理器。

# 安装
winget install CoreyButler.NVMforWindows

重启终端后使用:

nvm install 22             # 安装指定版本
nvm install lts            # 安装最新 LTS
nvm use 22                 # 切换版本
nvm list                   # 查看已安装版本
nvm list available         # 查看可用版本
nvm alias default 22       # 设置默认版本
nvm uninstall 18           # 卸载指定版本

配置镜像加速:

nvm node_mirror https://npmmirror.com/mirrors/node/
nvm npm_mirror https://npmmirror.com/mirrors/npm/

fnm 和 nvm-windows 选一个即可。fnm 更快(Rust 编写),nvm-windows 更成熟、社区更大。

如果你主要在仓库级固定版本,通常更推荐进一步看 Voltamise

配置 npm 镜像

# 淘宝镜像
npm config set registry https://registry.npmmirror.com

# 恢复官方源
npm config set registry https://registry.npmjs.org

镜像可以提升安装体验,但遇到奇怪依赖问题时,也建议先切回官方源做一次验证。

pnpm 包管理器

pnpm 通过硬链接和内容寻址存储,节省磁盘空间并加速安装。

对多包仓库、前端项目和依赖量大的项目来说,pnpm 往往是最值得优先掌握的包管理器。

安装

# 通过 npm
npm install -g pnpm

# 通过 winget
winget install pnpm.pnpm

# 通过 corepack(Node.js 16.13+)
corepack enable
corepack prepare pnpm@latest --activate

常用命令

pnpm install            # 安装依赖
pnpm add vue            # 添加依赖
pnpm add -D typescript  # 添加开发依赖
pnpm remove vue         # 移除依赖
pnpm dev                # 运行脚本(简写)
pnpm update --latest    # 更新所有依赖到最新
pnpm dlx create-vite    # 等同于 npx

与 npm 命令对照

npmpnpm
npm installpnpm install
npm install pkgpnpm add pkg
npm uninstall pkgpnpm remove pkg
npm run scriptpnpm script
npx commandpnpm dlx command

Workspace(Monorepo)

# pnpm-workspace.yaml
packages:
  - "packages/*"
  - "apps/*"
pnpm --filter @my/app dev   # 在指定包中运行
pnpm -r run build            # 在所有包中运行

workspace 是 monorepo 的核心能力之一,但前提是团队已经能稳定维护单仓库结构。

配置镜像

pnpm config set registry https://registry.npmmirror.com

Bun 运行时

Bun 是极速的 JavaScript 运行时,内置打包器、测试运行器和包管理器。

它很强,但不代表所有项目都该直接切过去。对已有 Node 项目,先把 Bun 当作包管理器或辅助工具试用,通常更稳。

安装

powershell -c "irm bun.sh/install.ps1 | iex"

验证:

bun --version

常用命令

bun init               # 初始化项目
bun install            # 安装依赖(比 npm 快很多)
bun add vue            # 添加依赖
bun run dev            # 运行脚本
bun test               # 运行测试
bun build ./index.ts   # 打包

为什么选择 Bun

  • 启动速度极快(比 Node.js 快数倍)
  • 内置 TypeScript 支持,无需额外配置
  • 兼容大部分 Node.js API 和 npm 包
  • 内置包管理器、打包器、测试运行器

进阶:Bun 作为包管理器

即使不用 Bun 运行代码,也可以用它替代 npm/yarn 来安装依赖:

# 在现有 Node.js 项目中使用 Bun 安装依赖
bun install

# 生成的 bun.lockb 是二进制格式,比 package-lock.json 更快

实际建议

个人开发机

  • 版本管理:fnm / Volta / mise 三选一
  • 包管理:优先 pnpm
  • 运行时:默认 Node,按需尝试 Bun

团队项目

  • 仓库里明确写版本管理策略
  • 固定唯一锁文件
  • 不要让 npmpnpmbun 混装同一项目依赖

常见问题

为什么一个项目会出现多个锁文件

通常是不同成员用了不同包管理器。长期看这会直接带来依赖树漂移和 CI 差异。

Bun 能不能直接替代 Node

有些项目可以,但不是默认都适合。涉及原生模块、老生态包或复杂构建链时,先验证兼容性再决定。

该选 fnm、Volta 还是 mise

  • 只想轻量切 Node 版本:fnm
  • 以 JS 工具链为中心:Volta
  • 想统一多语言:mise

参考链接

阅读建议
  • - 先读标题和摘要,再结合目录决定从哪个章节开始精读。
  • - 看到具体命令、配置或步骤时,尽量在自己的环境里同步验证。
  • - 如果你只是快速查资料,可先看目录和相关文档,再决定是否深入全文。
适合谁看
  • - 希望把零散经验整理成长期可复用工作流的人
  • - 想先建立认知,再决定是否深入实践的人
  • - 希望阅读时顺手建立自己的操作清单或收藏体系的人
执行前检查
  • - 先浏览标题、摘要和目录,带着问题阅读会更高效
  • - 顺手记录真正对你有用的命令、链接和注意事项,避免重复搜索
  • - 如果页面里提到相关文档,尽量一起打开对照,效果通常更完整
同类内容
← 上一篇VS Code 配置指南