Summary
vite-plus@0.2.9 depends on vitest@4.1.10 (exact) and peer-depends on @vitest/browser-playwright: "4.1.10" (exact). @vitest/browser-playwright@4.1.11 — the latest published version on the registry, and the version npm's resolver reaches for when nothing else in the tree pins it — itself peer-requires vitest@4.1.11 (exact). Because nothing else in a typical consumer's tree pins @vitest/browser-playwright or vitest to a specific version, npm's resolver ends up needing vitest to simultaneously satisfy two mutually exclusive exact-version peer requirements and fails with ERESOLVE.
Environment
vite-plus: 0.2.9
- npm:
12.0.2
- Node:
v26.5.0
Steps to reproduce
- In a fresh project with
"vite-plus": "^0.2.9" as the only relevant devDependency (no direct vitest or @vitest/browser-playwright pin), run:
rm -rf node_modules package-lock.json
npm install
- Observe:
npm error code ERESOLVE
npm error ERESOLVE could not resolve
npm error
npm error While resolving: <pkg>@undefined
npm error Found: vite-plus@0.2.8
npm error node_modules/vite-plus
npm error dev vite-plus@"^0.2.9" from the root project
npm error peerOptional vite-plus@"*" from oxfmt@0.61.0
npm error node_modules/oxfmt
npm error oxfmt@"=0.61.0" from vite-plus@0.2.8
npm error 2 more (oxlint, @askrjs/vite)
npm error
npm error Could not resolve dependency:
npm error dev vite-plus@"^0.2.9" from the root project
npm error
npm error Conflicting peer dependency: vitest@4.1.11
npm error node_modules/vitest
npm error peer vitest@"4.1.11" from @vitest/browser-playwright@4.1.11
npm error node_modules/@vitest/browser-playwright
npm error peerOptional @vitest/browser-playwright@"4.1.11" from vitest@4.1.11
Confirmed via npm view vite-plus@0.2.9 dependencies:
dependencies = {
...
vitest: '4.1.10',
...
}
peerDependencies = {
'@vitest/browser-playwright': '4.1.10',
'@vitest/browser-webdriverio': '4.1.10'
}
and npm view @vitest/browser-playwright versions confirms 4.1.11 is published and is the version npm's resolver prefers absent an explicit pin.
Expected
npm install with no other version pins in the consuming project resolves cleanly against vite-plus@0.2.9's stated dependency/peer graph.
Actual
npm install fails outright with ERESOLVE; the only workarounds are --legacy-peer-deps/--force (accepting an unverified resolution) or the consumer adding an overrides entry pinning @vitest/browser-playwright to 4.1.10 themselves.
Requirements
Acceptance criteria
Summary
vite-plus@0.2.9depends onvitest@4.1.10(exact) and peer-depends on@vitest/browser-playwright: "4.1.10"(exact).@vitest/browser-playwright@4.1.11— the latest published version on the registry, and the version npm's resolver reaches for when nothing else in the tree pins it — itself peer-requiresvitest@4.1.11(exact). Because nothing else in a typical consumer's tree pins@vitest/browser-playwrightorvitestto a specific version, npm's resolver ends up needingvitestto simultaneously satisfy two mutually exclusive exact-version peer requirements and fails withERESOLVE.Environment
vite-plus:0.2.912.0.2v26.5.0Steps to reproduce
"vite-plus": "^0.2.9"as the only relevant devDependency (no directvitestor@vitest/browser-playwrightpin), run:Confirmed via
npm view vite-plus@0.2.9 dependencies:and
npm view @vitest/browser-playwright versionsconfirms4.1.11is published and is the version npm's resolver prefers absent an explicit pin.Expected
npm installwith no other version pins in the consuming project resolves cleanly againstvite-plus@0.2.9's stated dependency/peer graph.Actual
npm installfails outright withERESOLVE; the only workarounds are--legacy-peer-deps/--force(accepting an unverified resolution) or the consumer adding anoverridesentry pinning@vitest/browser-playwrightto4.1.10themselves.Requirements
vite-plus's ownpeerDependenciesrange for@vitest/browser-playwright(and any other split peer like it) is wide enough to include whatever versions of that peer are compatible, ORvite-pluspins/bundles a consistent, mutually-resolvable set itself so a barenpm installdoesn't require the consumer to intervene.Acceptance criteria
rm -rf node_modules package-lock.json && npm installsucceeds with no--force/--legacy-peer-depsflag and no consumer-addedoverrides, on a project whose only relevant devDependency is"vite-plus": "^0.2.9"(or whatever the fixed version is).