Repository navigation
pnpm create vite-plus and yarn create vite-plus fail with spawn vp ENOENT when vp is not on PATH #3177
Description
Describe the bug
pnpm create vite-plus and yarn create vite-plus fail with spawn vp ENOENT at the dependency install step when no vp is on PATH. npm create vite-plus and bun create vite-plus succeed under the same conditions.
I expected create-vite-plus to work on a machine without a global Vite+ install, since it is the entry point recommended in #2970 and #3028.
The scaffold itself completes. Then vp create re-invokes vp install by bare command name (spawnargs: [ 'install' ]), and vp is not found. pnpm dlx and yarn dlx put only the bins of the requested package on PATH. After a pnpm create vite-plus run, the dlx directory's node_modules/.bin contains only create-vite-plus. vp belongs to the vite-plus dependency, so it is missing. npm's npx cache, by contrast, links vp and vpr next to create-vite-plus, which is why npm works. I did not inspect Yarn's dlx directory, but the symptom is the same.
A user with a global vp on PATH does not see this, because the bare vp then resolves to the global install. That install can also be a different version: here the global vp is 1.2.0 while create-vite-plus runs 1.3.0.
Reproduction
No repository needed; the steps below start from an empty directory.
Steps to reproduce
Use a shell whose PATH has Node.js and pnpm but no vp (I removed ~/.vite-plus/bin and kept the Node.js bin directory):
mkdir repro && cd repro
pnpm create vite-plus@1.3.0 vite:application --directory app --no-agent --no-editor --no-git --no-hooks --no-interactive --verbose
# exit 1: spawn vp ENOENTThe same failure happens with --package-manager npm or --package-manager pnpm, and with Yarn 4.18.1:
corepack yarn@4.18.1 create vite-plus@1.3.0 vite:application --directory app --no-interactive --verbose
# exit 1: spawn vp ENOENTFor comparison, with the same PATH, these all exit 0 and install dependencies:
npm create vite-plus@1.3.0 -- vite:application --directory app --no-interactive --verbose
bun create vite-plus@1.3.0 vite:application --directory app --no-interactive --verbose
pnpm dlx --package vite-plus@1.3.0 vp create vite:application --directory app --no-interactive --verboseSystem Info
macOS (Darwin 27.0.0)
Node.js 24.22.0, pnpm 12.9.1 (Vite+ installed pnpm 12.14.0 for the template step), Yarn 4.18.1 through Corepack, npm 11.19.1, Bun 1.3.9
create-vite-plus 1.3.0, vite-plus 1.3.0
`vp --version` and `vp env current` are not applicable: the bug only reproduces without `vp` on PATH. The global vp on this machine, removed from PATH for the runs, reports v1.2.0.Used Package Manager
pnpm (also Yarn)
Logs
Done in 97ms using pnpm v12.14.0
◆ ✔ Created vite.config.ts in app/vite.config.ts
◆ ✔ Merged staged config into app/vite.config.ts
▲ Failed to install git hooks
● Installing dependencies...
■ spawn vp ENOENT
Error: spawn vp ENOENT
at ChildProcess._handle.onexit (node:internal/child_process:316:19)
at onErrorNT (node:internal/child_process:554:16)
at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
errno: -2,
code: 'ENOENT',
syscall: 'spawn vp',
path: 'vp',
spawnargs: [ 'install' ]
}
Failed to generate code: spawn vp ENOENT(That log comes from a run with --git --hooks, which also shows Failed to install git hooks, probably for the same reason.)
Validations
- Read the Contributing Guidelines.
- Checked that there isn't already an issue for the same bug.
- Confirmed this is a Vite+ issue and not an upstream issue.
- The provided reproduction is a minimal reproducible example.
Metadata
Metadata
Assignees
Labels
Type
Fields
Priority
Activity
docs(adr): link voidzero-dev/vite-plus#3177 for the pnpm and Yarn cre…
fix(create): run child commands without a global vp (#3181)