All articles
Node.js

A complete guide to Node.js versions, npm, and Corepack

Understand the release cadence, key runtime capabilities, and where npm packages actually go.

12 min read

Node.js and its release lines

Node.js is a JavaScript runtime built on Chrome’s V8 engine. It is widely used for web tooling, server applications, and automation. The official site normally offers both LTS and Current release lines.

LTS

Long Term Support releases prioritize stability and security updates and are the recommended choice for production. Envis only provides LTS releases.

Current

Current delivers new features sooner, updates more frequently, has a shorter lifetime, and may require more compatibility work. It is best for evaluation and testing.

Under the announced plan, Node.js 27 ends the odd/even distinction between Current and LTS. One major release is planned each April, with major numbers aligned to years: Node.js 27 in 2027, Node.js 28 in 2028, and so on. Always confirm the final status against the official schedule.

From Node.js 14 to 26

Envis provides Node.js 14 through the latest supported LTS release. Older releases are omitted because of low usage. These are the notable capabilities in each major line.

v14.0.0

April 2020

Added optional chaining (?.) and nullish coalescing (??), with substantially improved ES module support and no need for the --experimental-modules flag.

v16.0.0

April 2021

Added official Apple Silicon builds and introduced Corepack for managing package managers such as Yarn and pnpm.

v18.0.0

April 2022

Included the Undici-based Fetch API and Web Streams API, encouraged the node: protocol for built-ins, and moved to OpenSSL 3.0.

v20.0.0

April 2023

Stabilized the test runner, added Single Executable Applications (SEA), and enabled Fetch and WASI by default.

v22.0.0

April 2024

Added support for require() of synchronous ESM, stabilized Watch Mode (--watch), introduced a WebSocket client, and upgraded to V8 12.4.

v24.0.0

May 2025

Included OpenSSL 3.5, supported import attributes for JSON modules, expanded the test runner, and upgraded to V8 13.x.

v26.0.0

May 2026

Continued with a newer V8 generation and JavaScript language features while removing deprecated APIs. Consult the official release notes for exact features and stability levels.

Node.js 14 on Apple Silicon

Node.js 14 has no official macOS ARM64 build, so Envis provides the x64 build. On an Apple Silicon Mac, run an x64 Terminal through Rosetta 2: open Finder → Applications → Utilities, open Get Info for Terminal, enable “Open using Rosetta,” and relaunch Terminal. Envis displays a compatibility warning when it detects this combination.

npm registry: where packages come from

npm is the default package manager installed with Node.js. The npm registry is a central service for distributing JavaScript packages. When you run npm install <package>

The environment variable NPM_CONFIG_REGISTRY temporarily selects a registry. Setting it in your shell profile makes it apply to later commands. Envis uses this variable to provide one-click registry switching.

Local packages, global packages, and module resolution

Project dependencies are installed in the current project’s node_modules/. Packages installed with npm install -g <package> go to a global location determined by npm’s prefix setting.

  • Common macOS/Linux location: /usr/local/lib/node_modules/
  • Common Windows location: %APPDATA%\npm\node_modules\
  • With nvm: ~/.nvm/versions/node/<version>/lib/node_modules/

NPM_CONFIG_PREFIX and PATH

The environment variable NPM_CONFIG_PREFIX temporarily changes the prefix used for global npm installs. On macOS/Linux, packages normally go under <prefix>/lib/node_modules/ and executable links go under <prefix>/bin/. On Windows, packages go under <prefix>\node_modules\ and executables go directly under <prefix>\

Changing the prefix does not move the Node.js runtime. To invoke globally installed commands directly, add <prefix>/bin to PATH on macOS/Linux, or add <prefix> on Windows. Envis updates PATH automatically when you change the prefix visually.

Corepack

Corepack is a package-manager proxy distributed with some Node.js releases and was introduced in Node.js 16.9.0. A project can declare Yarn or pnpm and its version through the packageManager field in package.json, and Corepack prepares that version without a manual global install. Bundling and default activation vary by Node.js release, so check it with corepack --version before relying on it.