Repository navigation
Description
Describe the bug
vp create --help documents this:
--package-manager NAME Use specified package manager (pnpm, npm, yarn, bun)
But on the vite:application path the flag doesn't do anything. I run vp create with --package-manager pnpm and get an npm project: the scaffolder is delegated through npx create-vite, deps are installed with npm, and the result has a package-lock.json plus devEngines.packageManager.name: "npm". No warning that the flag was dropped, it just vanishes.
The annoying part is that it sticks. Every later vp command reads devEngines first, so the project stays npm forever unless you convert it by hand.
The pnpm path itself works fine. If workspace-root detection resolves to pnpm (run vp create from a directory whose package.json says "packageManager": "pnpm@..."), you get a fully pnpm-native project: pnpm dlx delegation, pnpm-lock.yaml, pnpm-workspace.yaml with catalog: aliases, pnpm in devEngines. So it looks like the flag just isn't wired into that decision.
Reproduced on v0.1.24 and v0.2.5. Feels related to #1914 (warn instead of silently ignoring pm flags), except this one is vp create's own documented option rather than a pass-through.
Reproduction
https://github.com/FallDownTheSystem/vp-create-package-manager-repro
Steps to reproduce
From an empty directory with no package manager markers in any parent:
vp create vite:application --directory app --no-interactive --no-git --no-hooks --no-editor --no-agent --package-manager pnpm --verbose -- --template vue-tsThen look at app/: package-lock.json, and devEngines.packageManager.name is "npm".
System Info
vp v0.2.5
Local vite-plus:
vite-plus Not found
Tools:
vite Not found
rolldown Not found
vitest Not found
oxfmt Not found
oxlint Not found
oxlint-tsgolint Not found
tsdown Not found
Environment:
Package manager npm latest
Node.js v24.18.0
Environment:
Version 24.18.0
Source lts
Tool Paths:
node C:\Users\Juugo\.vite-plus\js_runtime\node\24.18.0\node.exe
npm C:\Users\Juugo\.vite-plus\js_runtime\node\24.18.0\npm.cmd
npx C:\Users\Juugo\.vite-plus\js_runtime\node\24.18.0\npx.cmd(run from an empty directory, hence the "Not found" rows)
Used Package Manager
pnpm
Logs
Running: npx create-vite@latest app --template vue-ts --no-interactive --no-immediate --no-rolldown
...
• Node 24.18.0 npm 12.0.1Full verbose log is in the repro repo's output.txt.
Validations
- Read the Contributing Guidelines.
- Check that there isn't already an issue for the same bug.
- Confirm this is a Vite+ issue and not an upstream issue (Vite, Vitest, tsdown, Rolldown, or Oxc).
- The provided reproduction is a minimal reproducible example.
Metadata
Metadata
Assignees
Labels
Type
Fields
Priority
Effort
Target date
Start date
Activity
jong-kyung commentedon Jul 21, 2026
Thanks for the report. I couldn't reproduce this using the provided steps. Could you provide a bit more information?
In particular, could you check whether another package manager is defined in any parent directory, for example through
package.jsonor a lockfile? Runningvp env currentfrom the directory where you ranvp createmay also help.[-]`vp create --package-manager pnpm` is silently ignored (scaffolds and installs with npm)[/-][+]`vp create --package-manager` is silently overridden by package manager detection from ancestor directories[/+]FallDownTheSystem commentedon Jul 22, 2026
Good call, that was it. My home directory had a stray
package.json+package-lock.json(leftover from some one-off tool install), and every directory I tested from was underneath it. In a clean tree the flag works exactly as documented, pnpm all the way through.So the actual bug is narrower than I originally reported: when detection finds package manager markers in an ancestor directory, the explicit
--package-manager pnpmflag is silently overridden by the detected one. I'd expect an explicit flag to beat ambient detection, or at least to get a warning that it's being ignored (same spirit as #1914).I've updated the repro repo so it's fully self-contained now:
repro.shcreates the stray ancestor markers itself (package.json+package-lock.jsontwo levels up), then runsvp create --package-manager pnpmfrom a subdirectory. Reproduces deterministically on a clean machine. Retitled the issue to match.Re
vp env current: from the repro directory it only prints the Node env (version/source/tool paths), no package manager line. The detected PM shows up invp --versionoutput instead ('Package manager: npm latest' in my case).fix(create): honor explicit package manager outside monorepos (voidze…