Context
While investigating a pnpm enable-global-virtual-store issue, @voidzero-dev/vite-plus-core failed to resolve vite-plus/binding when executed from pnpm's global virtual store realpath.
Current release rewrite:
@rolldown/binding-* -> vite-plus/binding
This creates an awkward package relationship:
vite-plus -> @voidzero-dev/vite-plus-core -> vite-plus/binding
A proposed optional peer dependency workaround(#2053) makes the dependency explicit, but it still feels circular because vite-plus already depends on @voidzero-dev/vite-plus-core .
Reproduction
A minimal reproduction is available here:
https://github.com/jong-kyung/repro-vite-plus-2054
It was created with vp create vite:application and enables pnpm's global virtual store. Running the repro imports vite/rolldown, which resolves @voidzero-dev/vite-plus-core from pnpm's global store realpath and fails to resolve vite-plus/binding.
vp install
vpr repro
# or
pnpm run repro
Expected failure:
Cannot find module 'vite-plus/binding'
Proposal
Consider moving the binding resolver into a neutral package, for example:
@voidzero-dev/vite-plus-binding
Then both packages can depend on it:
vite-plus -> @voidzero-dev/vite-plus-binding
@voidzero-dev/vite-plus-core -> @voidzero-dev/vite-plus-binding
and the release rewrite can become:
@rolldown/binding-* -> @voidzero-dev/vite-plus-binding
vite-plus/binding could remain as a compatibility re-export.
Benefit
This avoids the circular vite-plus -> core -> vite-plus/binding shape while making native binding resolution explicit for pnpm global virtual store layouts.
Context
While investigating a pnpm
enable-global-virtual-storeissue,@voidzero-dev/vite-plus-corefailed to resolvevite-plus/bindingwhen executed from pnpm's global virtual store realpath.Current release rewrite:
@rolldown/binding-* -> vite-plus/bindingThis creates an awkward package relationship:
A proposed optional peer dependency workaround(#2053) makes the dependency explicit, but it still feels circular because
vite-plusalready depends on@voidzero-dev/vite-plus-core.Reproduction
A minimal reproduction is available here:
https://github.com/jong-kyung/repro-vite-plus-2054
It was created with
vp create vite:applicationand enables pnpm's global virtual store. Running the repro importsvite/rolldown, which resolves@voidzero-dev/vite-plus-corefrom pnpm's global store realpath and fails to resolvevite-plus/binding.vp install vpr repro # or pnpm run reproExpected failure:
Proposal
Consider moving the binding resolver into a neutral package, for example:
Then both packages can depend on it:
and the release rewrite can become:
@rolldown/binding-* -> @voidzero-dev/vite-plus-bindingvite-plus/bindingcould remain as a compatibility re-export.Benefit
This avoids the circular
vite-plus -> core -> vite-plus/bindingshape while making native binding resolution explicit for pnpm global virtual store layouts.