You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs(rfc): default to node_modules/.bin/vp, not the package-relative path
Reviewer correctly pointed out that node_modules/.bin/<name> is the
conventional path editor extensions already use for oxlint/oxfmt, so
the TypeScript reference should target that by default. The previous
choice was Zed-driven and shouldn't be imposed on the Node consumers.
Changes:
- Phase 2 in the algorithm: validate via node_modules/vite-plus/
package.json, then resolve node_modules/.bin/vp (with Windows .cmd
and .exe fallbacks).
- Reference TypeScript updated; resolveVpAt now returns the .bin shim
rather than the package-relative path.
- Mermaid diagram: package-validation node first, then the .bin/vp
existence check.
- Per-extension migration plan: each extension targets whatever shim
path matches its existing oxlint/oxfmt pattern.
- oxc-vscode, coc-oxc → node_modules/.bin/vp
- oxc-zed → node_modules/vite-plus/bin/vp (Zed avoids .bin for WASM
reasons; lsp.rs:47)
- oxc-intellij-plugin → <vite-plus>/bin/vp via NodePackageDescriptor
- Conformance fixtures: vpPath values now show the .bin/vp path (the
TypeScript reference's output); a clarifying note explains that
ports targeting the package-relative path substitute their own
equivalent.
|`pnpm-subpackage-declared-root-hoisted`|`pnpm-workspace.yaml` at `<repo>`, `packages/app/package.json` declares `vite-plus`, install hoisted to `<repo>/node_modules/vite-plus/`| From `packages/app/`: `{ root: "<repo>/packages/app", vpPath: "<repo>/node_modules/vite-plus/bin/vp" }`|
281
-
|`npm-subpackage-direct-dep-unhoisted`| Root `package.json` with `workspaces`, `packages/app/package.json` declares `vite-plus`, install inside `packages/app/node_modules/vite-plus/`| From `packages/app/`: `{ root: "<repo>/packages/app", vpPath: "<repo>/packages/app/node_modules/vite-plus/bin/vp" }`|
282
-
|`root-declared-no-install`| Root `package.json` declares `vite-plus`, no `node_modules` (fresh clone) |`{ root: "<repo>" }` — install hint |
283
-
|`transitive-install`| No walked-up `package.json` declares `vite-plus`, but `node_modules/vite-plus/` exists as a transitive dep |`null` — no direct declaration |
284
-
|`bin-vp-orphan`| Declared in root `package.json`, but `node_modules/vite-plus/` is broken (missing `package.json`, wrong `name`, or unparseable) |`{ root: "<repo>" }` — install rejected as orphan |
285
-
|`parent-vite-plus-nested-repo`| Outer dir declares + installs `vite-plus`; inner subdir is its own root workspace and does not | From inside the nested workspace: `null`|
286
-
|`plain-non-vite-plus`| A normal Node project, no `vite-plus` anywhere |`null`|
287
-
|`yarn4-pnp`| Berry/PnP, no `node_modules`, root `package.json` declares `vite-plus`|`{ root: "<repo>" }` — install hint |
294
+
Every implementation must produce identical `root` values and the
295
+
same null vs. non-null determination on these fixtures.
296
+
297
+
The `vpPath` values below show the path the **TypeScript reference**
298
+
produces (`node_modules/.bin/vp`); ports that target
|`pnpm-subpackage-declared-root-hoisted`|`pnpm-workspace.yaml` at `<repo>`, `packages/app/package.json` declares `vite-plus`, install hoisted to `<repo>/node_modules/vite-plus/`| From `packages/app/`: `{ root: "<repo>/packages/app", vpPath: "<repo>/node_modules/.bin/vp" }`|
307
+
|`npm-subpackage-direct-dep-unhoisted`| Root `package.json` with `workspaces`, `packages/app/package.json` declares `vite-plus`, install inside `packages/app/node_modules/vite-plus/`| From `packages/app/`: `{ root: "<repo>/packages/app", vpPath: "<repo>/packages/app/node_modules/.bin/vp" }`|
308
+
|`root-declared-no-install`| Root `package.json` declares `vite-plus`, no `node_modules` (fresh clone) |`{ root: "<repo>" }` — install hint |
309
+
|`transitive-install`| No walked-up `package.json` declares `vite-plus`, but `node_modules/vite-plus/` exists as a transitive dep |`null` — no direct declaration |
310
+
|`bin-vp-orphan`| Declared in root `package.json`, but `node_modules/vite-plus/` is broken (missing `package.json`, wrong `name`, or unparseable) |`{ root: "<repo>" }` — install rejected as orphan |
311
+
|`parent-vite-plus-nested-repo`| Outer dir declares + installs `vite-plus`; inner subdir is its own root workspace and does not | From inside the nested workspace: `null`|
312
+
|`plain-non-vite-plus`| A normal Node project, no `vite-plus` anywhere |`null`|
313
+
|`yarn4-pnp`| Berry/PnP, no `node_modules`, root `package.json` declares `vite-plus`|`{ root: "<repo>" }` — install hint |
0 commit comments