Skip to content

🐛 Pinned [email protected] breaks pnpm deploy --prod with ERR_PNPM_CATALOG_ENTRY_NOT_FOUND_FOR_SPEC #1889

Description

@huttotw

Summary

knip pins oxc-resolver at the exact version 11.21.3. That published version
(along with 11.22.0 and 11.23.0) shipped a broken manifest containing an
unresolved pnpm workspace-only catalog specifier:

// [email protected] package.json
"devDependencies": {
  "vite-plus": "catalog:"
}

Because knip pins the exact broken version, any downstream project that resolves
dependencies without the lockfile — e.g. pnpm deploy --prod — fails:

ERR_PNPM_CATALOG_ENTRY_NOT_FOUND_FOR_SPEC
No catalog entry 'vite-plus' was found for catalog 'default'.

pnpm install --frozen-lockfile is unaffected (it trusts the already-resolved
lockfile and never re-resolves catalog: specs), so this passes normal installs
and only surfaces in production deploy/prune paths that re-resolve the graph.

Upstream context

This was an oxc-resolver publishing bug, reported and fixed upstream:
oxc-project/oxc-resolver#1292. It's fixed in
[email protected]+ ("vite-plus": "^0.2.0"); 11.24.0 was never published.

However, knip still pins the broken release. oxc-resolver has been an exact
pin (11.21.3) since knip 6.18.0, and the latest 6.27.0 still pins it — so
there is no knip release that resolves to a fixed oxc-resolver, and consumers
have no way to fix it except a pnpm.overrides entry.

Reproduction

  1. In a pnpm workspace, add knip as a devDependency (lockfile resolves [email protected]).

  2. Run a graph-re-resolving command, e.g.:

    pnpm deploy --filter <package> --prod ./out
  3. Resolution fails with ERR_PNPM_CATALOG_ENTRY_NOT_FOUND_FOR_SPEC on vite-plus.

Suggested fix

Bump the oxc-resolver dependency to ^11.24.1 (currently 11.24.2), and
ideally use a caret range rather than an exact pin so future upstream patches
float in automatically.

Environment

  • knip: 6.27.0 (latest)
  • oxc-resolver: 11.21.3 (pinned by knip)
  • pnpm: catalog resolution during pnpm deploy --prod

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