Repository navigation
Description
This issue was opened by an AI agent on behalf of @chenxin-yan.
Description
Following up on #1021: could Vite+ support pnpm's strict peer validation without blanket peerDependencyRules.allowAny / allowedVersions: '*' exceptions?
I understand the workaround in #1021 is intentional. This request is specifically about retaining compatibility checks, not just hiding the warning: we want compatible Vite consumers to install while a genuinely incompatible Vite plugin still fails validation.
The required alias exposes @voidzero-dev/vite-plus-core@1.0.0-rc.0 as vite. Its published manifest declares bundled Vite 8.3.0, but pnpm compares the wrapper's 1.0.0-rc.0 version with consumers' Vite peer ranges. This also occurs with the bundled/aligned Vitest, without a framework or application.
This is a packaging/integration support request, not evidence of a Vite/Vitest runtime incompatibility or a demonstrated pnpm regression.
Reproduction
Tested on Linux x86_64 (NixOS), Nix-provided Node 24.20.0 LTS and pnpm 12.3.4, project-local Vite+ 1.0.0-rc.0, matching core 1.0.0-rc.0, and Vitest 5.0.1. No global Vite+ manager, dependency patches, peer-rule exceptions or application code.
In a fresh empty directory:
package.json:
{
"name": "vite-plus-strict-peers-repro",
"private": true,
"type": "module",
"packageManager": "pnpm@12.3.4",
"devDependencies": {
"vite-plus": "1.0.0-rc.0",
"vite": "npm:@voidzero-dev/vite-plus-core@1.0.0-rc.0",
"vitest": "5.0.1"
}
}pnpm-workspace.yaml:
strictPeerDependencies: true
overrides:
'vite@*': npm:@voidzero-dev/vite-plus-core@1.0.0-rc.0
'vitest@*': 5.0.1Run:
pnpm install --ignore-scripts
pnpm peers checkBoth commands exit 1. Installation reports:
[ERR_PNPM_PEER_DEP_ISSUES] Unmet peer dependencies
✕ unmet peer vite
Installed: 1.0.0-rc.0
Wanted:
"^6.0.0 || ^7.0.0 || ^8.0.0":
@vitest/mocker@5.0.1
"^6.4.0 || ^7.0.0 || ^8.0.0":
vitest@5.0.1
Lifecycle scripts were disabled to keep this metadata-only reproduction bounded; no application build or runtime assertion is involved.
Suggested solution
An officially maintained integration that preserves validation against the supported bundled Vite version, rather than requiring broad peer-check suppression. I am not prescribing a particular implementation; this may require packaging changes or coordination with pnpm.
Useful acceptance cases would be:
- Compatible consumers of bundled Vite 8 install with strict peer checks enabled.
- A consumer requiring only Vite 7 remains rejected.
- The documented core alias and a single aligned Vitest runtime are preserved.
If there is already a supported strict-validation configuration, please point me to it. Otherwise, please document the limitation and required suppression explicitly in the manual-installation instructions.
Alternatives considered
- The
allowAnyworkaround invp updatewarns about issues withvitepeer dependency #1021 addresses the warning but loses the compatibility check this request is about. - Narrow local peer exceptions or a
.pnpmfilemanifest rewrite would move ongoing compatibility policy into each consumer; we would prefer an upstream-supported solution. - Installing ordinary Vite independently to satisfy the peers would defeat the documented core-alignment requirement.
Additional context
- Manual installation and alias/Vitest alignment
- Documented pnpm
@*override keys - Published core manifest, including
bundledVersions - Shipped migration source:
rewritePnpmWorkspaceYamladds managed keys to bothallowAnyandallowedVersions: '*';pnpmPeerDependencyRulesSatisfyVitePlusrequires those settings. Thus running the migrator does not preserve the requested validation.
Validations
- Read the contributing guidelines.
- This request concerns Vite+'s packaging/integration policy, not an underlying compiler/runtime failure.
- Checked for an existing request;
vp updatewarns about issues withvitepeer dependency #1021 is related and closed with the workaround, while this follow-up requests preservation of strict validation.
Metadata
Metadata
Assignees
Labels
Type
Fields
Priority
Effort
Target date
Start date
Activity
fengmk2 commentedon Sep 24, 2026
The workaround configured through
allowAnyis currently the way to resolve this, since I don’t want to directly upgrade@voidzero-dev/vite-plus-coreto version 8.0.0 yet.pablogamboa commentedon Sep 28, 2026
Adding an npm data point, since the
allowAnyworkaround is pnpm-only.With npm 12.1.0 / Node 24.21.0 and
vite-plus@1.0.0as a devDependency in an npm workspaces monorepo, everynpm installprintsERESOLVE overriding peer dependencywarnings for vite-plus's own dependency tree:npm ls vitealso marks the aliased core asinvalid. It's only a warning (install succeeds and tests pass), but npm has no per-package equivalent ofpeerDependencyRules.allowAny. The only suppression islegacy-peer-deps=true, which changes peer resolution for the whole tree, so npm users are left with either permanent noise or a global setting they probably shouldn't enable.Note this happens with no user-side
viteoverride at all: it comes purely fromvite-plus's owndependencies(vite: npm:@voidzero-dev/vite-plus-core@1.0.0alongsidevitest: 5.0.1), so the vite-plus manifest alone is internally inconsistent from npm's point of view.fengmk2 commentedon Oct 6, 2026
Plan to upgrade
@voidzero-dev/vite-plus-coreto a range matching Vite’s major version, which should resolve this issue.docs(rfc): align the core version with the bundled Vite version
feat(core): align the core version with the bundled Vite version
cmaciasjimenez commentedon Nov 9, 2026
A data point for the plan above: pnpm's docs now mark
peerDependencyRulesas deprecated (https://pnpm.io/settings/peer-dependencies). The same page saysallowAnyhas no directoverridesequivalent, because a"vite:peer": "*"override rewrites the declared peer ranges rather than only silencing the report. So theallowAnyworkaround still works on pnpm 12.18.0, but it now rests on a deprecated setting. That is one more reason to version@voidzero-dev/vite-plus-coreon Vite's major.Also, with vite-plus 1.5.0 and vitest 5.1.0 from the catalog, our workspace needs only
viteinallowAny: removingvitestleavespnpm peers checkclean, while removingvitereports unmet peers from@vitejs/plugin-react,@tailwindcss/vite,@lingui/vite-plugin,@tanstack/router-plugin,vitestand@vitest/mocker.docs(rfc): align the core version with the bundled Vite version
feat(core): align the core version with the bundled Vite version
docs(rfc): show the effect before and after the core version change
docs(rfc): align the core version with the bundled Vite version
feat(core): align the core version with the bundled Vite version
docs(rfc): show the effect before and after the core version change