Skip to content

Corepack incorrectly selects prerelease/dev versions of pnpm when no version is specified #774

@tkesici

Description

@tkesici

After some discussion on the pnpm issue (pnpm/pnpm#10214), it turns out the problem is not caused by a faulty pnpm release, pnpm v11 has changed its binary entry path from bin/pnpm.cjs to bin/pnpm.mjs., so the development build 11.0.0-dev.1005 is not faulty. Corepack is expecting the old path and fails.

So the issue appears to be:

  • Corepack’s version resolution prefers a dev build over the latest stable
  • Corepack seems to rely on a hardcoded pnpm binary path instead of reading the correct bin path from package.json.

As a workaround I'm currently using corepack use pnpm@10.22.0 or corepack use pnpm@latest (or latest-9, latest-10 etc.)

Leaving this update here so the root cause is clearer.

Originally posted by @tkesici in #772

Problem

When running corepack use pnpm, Corepack unexpectedly selects and installs a prerelease development build of pnpm (11.0.0-dev.1005) instead of the latest stable version .

This leads to failure because pnpm v11 is not stable yet and its structure differs from the current pnpm 10.x series.

Expected Behavior

If no version is specified, Corepack should prefer the latest stable release of pnpm (e.g 10.x)

Actual Behavior

corepack use pnpm resolves to: Installing pnpm@11.0.0-dev.1005...

Environment

Node.js: 20 (node:20-alpine)

Corepack: 0.34.4

OS: Alpine Linux

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions