Skip to content

chore: enforce pnpm 11#7465

Merged
Sheraff merged 1 commit into
mainfrom
chore/enforce-pnpm-11
May 21, 2026
Merged

chore: enforce pnpm 11#7465
Sheraff merged 1 commit into
mainfrom
chore/enforce-pnpm-11

Conversation

@Sheraff
Copy link
Copy Markdown
Collaborator

@Sheraff Sheraff commented May 21, 2026

Summary

Adds a root engines.pnpm requirement of >=11.0.0 alongside the existing exact packageManager declaration.

What This Blocks

  • Blocks pnpm versions below 11 from running the repo's install workflow when that older pnpm binary is the one actually executing the command.
  • Blocks pnpm versions below 11 from running pnpm run project-script workflows when that older pnpm binary is the one actually executing the command.
  • Produces pnpm's ERR_PNPM_UNSUPPORTED_ENGINE error with the expected range and actual pnpm version for those guarded paths.
  • Covers cases where packageManager is not honored as an automatic handoff to pnpm 11+, or that handoff is explicitly disabled.

What This Does Not Block

  • Does not force the exact pnpm@11.1.0 version. The engine range allows any pnpm >=11.0.0; the existing packageManager field remains the exact version hint for tools and pnpm versions that honor it.
  • Does not necessarily error for every pnpm 10 invocation. A direct pnpm 10 binary can honor packageManager and hand off to pnpm 11.1.0 before running the command; in that case the command succeeds under pnpm 11 rather than failing under pnpm 10.
  • Does not fully intercept every possible pnpm subcommand once an older pnpm binary is already executing. In local checks, pnpm list and pnpm exec still ran under pnpm 9/10.
  • Does not auto-upgrade a globally installed pnpm. Users with pnpm 9/10 installed directly still need their tooling to honor packageManager, or they need to install/invoke pnpm 11+.
  • Does not add engineStrict; the blocking behavior here comes from pnpm honoring the project engines.pnpm field for install and run workflows.

Verification

  • pnpm install --lockfile-only --frozen-lockfile --ignore-scripts succeeds with pnpm 11.1.0.
  • A direct pnpm 9.15.9 binary fails pnpm install --lockfile-only --frozen-lockfile --ignore-scripts with ERR_PNPM_UNSUPPORTED_ENGINE.
  • A direct pnpm 9.15.9 binary fails pnpm run with ERR_PNPM_UNSUPPORTED_ENGINE.
  • A direct pnpm 10.0.0 binary reports pnpm 11.1.0 inside this repo by default because it honors packageManager and hands off to the declared package-manager version.
  • With that pnpm 10 handoff disabled via npm_config_manage_package_manager_versions=false, pnpm 10.0.0 fails pnpm install --lockfile-only --frozen-lockfile --ignore-scripts with ERR_PNPM_UNSUPPORTED_ENGINE.
  • With that pnpm 10 handoff disabled via npm_config_manage_package_manager_versions=false, pnpm 10.0.0 fails pnpm run with ERR_PNPM_UNSUPPORTED_ENGINE.
  • Direct pnpm 9/10 checks also confirmed pnpm list --depth 0 and pnpm exec node -e "console.log('ok')" are not blocked by this field.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 21, 2026

📝 Walkthrough

Walkthrough

The pull request adds a package manager version constraint to the root package.json, requiring pnpm version 11.0.0 or later. This ensures all contributors and CI systems use a compatible pnpm version.

Changes

Package Manager Configuration

Layer / File(s) Summary
pnpm version engine constraint
package.json
Added engines.pnpm field requiring pnpm >=11.0.0 to enforce a minimum package manager version across the project.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~2 minutes

Poem

🐰 A tiny constraint, so clean and so small,
Version eleven—we'll work great with all!
Pnpm locked in, no more version woes,
The build flows true, as the engine code shows! ✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title 'chore: enforce pnpm 11' accurately and concisely summarizes the main change: adding a pnpm >=11.0.0 engine constraint to package.json.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/enforce-pnpm-11

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Copy Markdown
Contributor

🚀 Changeset Version Preview

No changeset entries found. Merging this PR will not cause a version bump for any packages.

@nx-cloud
Copy link
Copy Markdown
Contributor

nx-cloud Bot commented May 21, 2026

View your CI Pipeline Execution ↗ for commit 14d9cf8

Command Status Duration Result
nx affected --targets=test:eslint,test:unit,tes... ✅ Succeeded 8m 12s View ↗
nx run-many --target=build --exclude=examples/*... ✅ Succeeded 2m 12s View ↗

☁️ Nx Cloud last updated this comment at 2026-05-21 20:44:47 UTC

@pkg-pr-new
Copy link
Copy Markdown

pkg-pr-new Bot commented May 21, 2026

More templates

@tanstack/arktype-adapter

npm i https://pkg.pr.new/@tanstack/arktype-adapter@7465

@tanstack/eslint-plugin-router

npm i https://pkg.pr.new/@tanstack/eslint-plugin-router@7465

@tanstack/eslint-plugin-start

npm i https://pkg.pr.new/@tanstack/eslint-plugin-start@7465

@tanstack/history

npm i https://pkg.pr.new/@tanstack/history@7465

@tanstack/nitro-v2-vite-plugin

npm i https://pkg.pr.new/@tanstack/nitro-v2-vite-plugin@7465

@tanstack/react-router

npm i https://pkg.pr.new/@tanstack/react-router@7465

@tanstack/react-router-devtools

npm i https://pkg.pr.new/@tanstack/react-router-devtools@7465

@tanstack/react-router-ssr-query

npm i https://pkg.pr.new/@tanstack/react-router-ssr-query@7465

@tanstack/react-start

npm i https://pkg.pr.new/@tanstack/react-start@7465

@tanstack/react-start-client

npm i https://pkg.pr.new/@tanstack/react-start-client@7465

@tanstack/react-start-rsc

npm i https://pkg.pr.new/@tanstack/react-start-rsc@7465

@tanstack/react-start-server

npm i https://pkg.pr.new/@tanstack/react-start-server@7465

@tanstack/router-cli

npm i https://pkg.pr.new/@tanstack/router-cli@7465

@tanstack/router-core

npm i https://pkg.pr.new/@tanstack/router-core@7465

@tanstack/router-devtools

npm i https://pkg.pr.new/@tanstack/router-devtools@7465

@tanstack/router-devtools-core

npm i https://pkg.pr.new/@tanstack/router-devtools-core@7465

@tanstack/router-generator

npm i https://pkg.pr.new/@tanstack/router-generator@7465

@tanstack/router-plugin

npm i https://pkg.pr.new/@tanstack/router-plugin@7465

@tanstack/router-ssr-query-core

npm i https://pkg.pr.new/@tanstack/router-ssr-query-core@7465

@tanstack/router-utils

npm i https://pkg.pr.new/@tanstack/router-utils@7465

@tanstack/router-vite-plugin

npm i https://pkg.pr.new/@tanstack/router-vite-plugin@7465

@tanstack/solid-router

npm i https://pkg.pr.new/@tanstack/solid-router@7465

@tanstack/solid-router-devtools

npm i https://pkg.pr.new/@tanstack/solid-router-devtools@7465

@tanstack/solid-router-ssr-query

npm i https://pkg.pr.new/@tanstack/solid-router-ssr-query@7465

@tanstack/solid-start

npm i https://pkg.pr.new/@tanstack/solid-start@7465

@tanstack/solid-start-client

npm i https://pkg.pr.new/@tanstack/solid-start-client@7465

@tanstack/solid-start-server

npm i https://pkg.pr.new/@tanstack/solid-start-server@7465

@tanstack/start-client-core

npm i https://pkg.pr.new/@tanstack/start-client-core@7465

@tanstack/start-fn-stubs

npm i https://pkg.pr.new/@tanstack/start-fn-stubs@7465

@tanstack/start-plugin-core

npm i https://pkg.pr.new/@tanstack/start-plugin-core@7465

@tanstack/start-server-core

npm i https://pkg.pr.new/@tanstack/start-server-core@7465

@tanstack/start-static-server-functions

npm i https://pkg.pr.new/@tanstack/start-static-server-functions@7465

@tanstack/start-storage-context

npm i https://pkg.pr.new/@tanstack/start-storage-context@7465

@tanstack/valibot-adapter

npm i https://pkg.pr.new/@tanstack/valibot-adapter@7465

@tanstack/virtual-file-routes

npm i https://pkg.pr.new/@tanstack/virtual-file-routes@7465

@tanstack/vue-router

npm i https://pkg.pr.new/@tanstack/vue-router@7465

@tanstack/vue-router-devtools

npm i https://pkg.pr.new/@tanstack/vue-router-devtools@7465

@tanstack/vue-router-ssr-query

npm i https://pkg.pr.new/@tanstack/vue-router-ssr-query@7465

@tanstack/vue-start

npm i https://pkg.pr.new/@tanstack/vue-start@7465

@tanstack/vue-start-client

npm i https://pkg.pr.new/@tanstack/vue-start-client@7465

@tanstack/vue-start-server

npm i https://pkg.pr.new/@tanstack/vue-start-server@7465

@tanstack/zod-adapter

npm i https://pkg.pr.new/@tanstack/zod-adapter@7465

commit: 14d9cf8

@Sheraff Sheraff merged commit 28fda1c into main May 21, 2026
10 checks passed
@Sheraff Sheraff deleted the chore/enforce-pnpm-11 branch May 21, 2026 21:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants