|
| 1 | +--- |
| 2 | +title: pnpm 10.14 |
| 3 | +authors: zkochan |
| 4 | +tags: [release] |
| 5 | +date: 2025-07-31 |
| 6 | +--- |
| 7 | + |
| 8 | +## Added support for JavaScript runtime resolution |
| 9 | + |
| 10 | +Declare Node.js, Deno, or Bun in [`devEngines.runtime`](https://github.com/openjs-foundation/package-metadata-interoperability-collab-space/issues/15) (inside `package.json`) and let pnpm download and pin it automatically. |
| 11 | + |
| 12 | +Usage example: |
| 13 | + |
| 14 | +```json |
| 15 | +{ |
| 16 | +"devEngines": { |
| 17 | + "runtime": { |
| 18 | + "name": "node", |
| 19 | + "version": "^24.4.0", |
| 20 | + "onFail": "download" (we only support the "download" value for now) |
| 21 | + } |
| 22 | +} |
| 23 | +} |
| 24 | +``` |
| 25 | + |
| 26 | +How it works: |
| 27 | + |
| 28 | +1. `pnpm install` resolves your specified range to the latest matching runtime version. |
| 29 | +1. The exact version (and checksum) is saved in the lockfile. |
| 30 | +1. Scripts use the local runtime, ensuring consistency across environments. |
| 31 | + |
| 32 | +Why this is better: |
| 33 | + |
| 34 | +1. This new setting supports also Deno and Bun (vs. our Node-only settings `useNodeVersion` and `executionEnv.nodeVersion`) |
| 35 | +1. Supports version ranges (not just a fixed version). |
| 36 | +1. The resolved version is stored in the pnpm lockfile, along with an integrity checksum for future validation of the Node.js content's validity. |
| 37 | +1. It can be used on any workspace project (like `executionEnv.nodeVersion`). So, different projects in a workspace can use different runtimes. |
| 38 | +1. For now `devEngines.runtime` setting will install the runtime locally, which we will improve in future versions of pnpm by using a shared location on the computer. |
| 39 | + |
| 40 | +Related PR: [#9755](https://github.com/pnpm/pnpm/pull/9755). |
| 41 | + |
| 42 | +## Other new features |
| 43 | + |
| 44 | +- Added `--cpu`, `--libc`, and `--os` to `pnpm install`, `pnpm add`, and `pnpm dlx` to customize `supportedArchitectures` via the CLI [#7510](https://github.com/pnpm/pnpm/issues/7510). |
| 45 | + |
| 46 | +## Bug Fixes |
| 47 | + |
| 48 | +- Fix a bug in which `pnpm add` downloads packages whose `libc` differ from `pnpm.supportedArchitectures.libc`. |
| 49 | +- The integrities of the downloaded Node.js artifacts are verified [#9750](https://github.com/pnpm/pnpm/pull/9750). |
| 50 | +- Allow `dlx` to parse CLI flags and options between the `dlx` command and the command to run or between the `dlx` command and `--` [#9719](https://github.com/pnpm/pnpm/issues/9719). |
| 51 | +- `pnpm install --prod` should removing hoisted dev dependencies [#9782](https://github.com/pnpm/pnpm/issues/9782). |
| 52 | +- Fix an edge case bug causing local tarballs to not re-link into the virtual store. This bug would happen when changing the contents of the tarball without renaming the file and running a filtered install. |
| 53 | +- Fix a bug causing `pnpm install` to incorrectly assume the lockfile is up to date after changing a local tarball that has peers dependencies. |
| 54 | + |
0 commit comments