Node.js 版本、npm 与 Corepack 完整指南
理解版本发布节奏、关键运行时能力,以及 npm 包究竟被下载到哪里。
Node.js 与版本通道
Node.js 是基于 Chrome V8 引擎的 JavaScript 运行时,广泛用于 Web 工具链、服务端应用和自动化任务。官网通常同时提供 LTS 与 Current 两条发布线。
LTS
Long Term Support,即长期支持版本,重点是稳定性和安全更新,适合生产环境。Envis 只提供 LTS 版本。
Current
包含最新功能,更新更频繁、生命周期更短,也更可能遇到兼容性问题,适合体验与测试。
按照已公布的规划,从 Node.js 27 开始将不再用奇偶大版本区分 Current 与 LTS,并改为每年 4 月发布一个大版本;版本号与年份对齐,例如 Node.js 27 对应 2027 年、Node.js 28 对应 2028 年。实际发布状态仍应以官方计划为准。
从 Node.js 14 到 26
Envis 提供 Node.js 14 至最新受支持的 LTS 版本;更早版本由于使用量较少不再提供。下面是各大版本最值得关注的能力。
v14.0.0
2020 年 4 月支持可选链(?.)和空值合并(??)运算符;ES 模块支持显著改进,不再需要 --experimental-modules 标志。
v16.0.0
2021 年 4 月提供官方 Apple Silicon 构建;引入 Corepack,用来管理 Yarn、pnpm 等包管理器。
v18.0.0
2022 年 4 月内置基于 Undici 的 Fetch API,并支持 Web Streams API;推荐使用 node: 协议引入内置模块;OpenSSL 升级至 3.0。
v20.0.0
2023 年 4 月Test Runner 进入稳定状态;支持 Single Executable Applications(SEA);Fetch API 和 WASI 默认启用。
v22.0.0
2024 年 4 月支持 require() 加载同步 ESM 模块;Watch Mode(--watch)进入稳定状态;加入 WebSocket 客户端;V8 升级至 12.4。
v24.0.0
2025 年 5 月内置 OpenSSL 3.5;支持 JSON 模块的 import attributes 语法;Test Runner 继续增强;V8 升级至 13.x。
v26.0.0
2026 年 5 月带来新一代 V8 与 JavaScript 语言能力,并继续移除废弃 API。具体特性和稳定性状态应以 Node.js 官方发布说明为准。
Node.js 14 与 Apple Silicon
Node.js 14 没有官方 macOS ARM64 构建,Envis 提供的也是 x64 版本。在 Apple Silicon Mac 上需要通过 Rosetta 2 运行 x64 终端:打开“访达 → 应用程序 → 实用工具”,选择“终端”并打开“显示简介”,勾选“使用 Rosetta 打开”,再重新启动终端。Envis 在检测到这种组合时会显示兼容性警告。
npm registry:包从哪里下载
npm 是 Node.js 的默认包管理器,并随 Node.js 一起安装。npm registry 是集中存储和分发 JavaScript 包的平台。执行 npm install <package>,客户端会从当前配置的 registry 下载包。
- 官方 registry:https://registry.npmjs.org
- npmmirror 镜像:https://registry.npmmirror.com
- 腾讯云镜像:https://mirrors.cloud.tencent.com/npm/
环境变量 NPM_CONFIG_REGISTRY 可以临时指定 registry;写入终端配置文件后会持续影响后续命令。Envis 使用这个变量实现可视化的一键换源。
本地包、全局包与模块解析
项目依赖安装在当前项目的 node_modules/。使用 npm install -g <package> 安装的全局包,其位置由 npm 的 prefix 配置决定。
- macOS / Linux 常见位置:
/usr/local/lib/node_modules/ - Windows 常见位置:
%APPDATA%\npm\node_modules\ - 使用 nvm 时:
~/.nvm/versions/node/<version>/lib/node_modules/
NPM_CONFIG_PREFIX 与 PATH
环境变量 NPM_CONFIG_PREFIX 可以临时指定 npm 全局安装所使用的 prefix。macOS/Linux 的包通常位于 <prefix>/lib/node_modules/,可执行文件链接位于 <prefix>/bin/;Windows 的包位于 <prefix>\node_modules\,可执行文件位于 <prefix>\。
改变 prefix 不会迁移 Node.js 本体。为了直接在终端调用全局包提供的命令,macOS/Linux 需要把 <prefix>/bin 加入 PATH;Windows 则把 <prefix> 加入 PATH。通过 Envis 修改 prefix 时,这项 PATH 配置会自动完成。
Corepack
Corepack 是随部分 Node.js 版本分发的包管理器代理工具,从 Node.js 16.9.0 开始引入。它让项目通过 package.json 的 packageManager 字段声明 Yarn 或 pnpm 及其版本,再按需准备正确版本,无需手动全局安装。不同 Node.js 版本对 Corepack 的捆绑和默认启用状态可能不同,使用前可运行 corepack --version 检查。