Skip to content

fix(test): rewrite vitest self-references in globals.d.ts for type-aware linting#1177

Open
fengmk2 wants to merge 4 commits intomainfrom
fix-vitest-globals
Open

fix(test): rewrite vitest self-references in globals.d.ts for type-aware linting#1177
fengmk2 wants to merge 4 commits intomainfrom
fix-vitest-globals

Conversation

@fengmk2
Copy link
Copy Markdown
Member

@fengmk2 fengmk2 commented Mar 28, 2026

The bundled globals.d.ts declares types like typeof import('vitest')['test'],
but vitest is not resolvable from the @voidzero-dev/vite-plus-test package
context in pnpm's strict node_modules layout. TypeScript silently treats the
unresolved import as any, but oxlint's type-aware linting treats it as an
error type, causing no-unsafe-call errors.

Fix by rewriting import('vitest') to import('@voidzero-dev/vite-plus-test')
during the bundleVitest() copy step, making it a self-reference that resolves
correctly via Node.js package self-referencing.

Also adds the vite-plus-vitest-global-type-minimal-repro project to ecosystem-ci.

…are linting

The bundled globals.d.ts declares types like `typeof import('vitest')['test']`,
but `vitest` is not resolvable from the @voidzero-dev/vite-plus-test package
context in pnpm's strict node_modules layout. TypeScript silently treats the
unresolved import as `any`, but oxlint's type-aware linting treats it as an
`error` type, causing `no-unsafe-call` errors.

Fix by rewriting `import('vitest')` to `import('@voidzero-dev/vite-plus-test')`
during the bundleVitest() copy step, making it a self-reference that resolves
correctly via Node.js package self-referencing.

Also adds the vite-plus-vitest-global-type-minimal-repro project to ecosystem-ci.
@netlify
Copy link
Copy Markdown

netlify bot commented Mar 28, 2026

Deploy Preview for viteplus-preview canceled.

Name Link
🔨 Latest commit fd1b75e
🔍 Latest deploy log https://app.netlify.com/projects/viteplus-preview/deploys/69c7797d22e5e80008ea4024

@fengmk2 fengmk2 self-assigned this Mar 28, 2026
Copy link
Copy Markdown
Member Author

fengmk2 commented Mar 28, 2026


How to use the Graphite Merge Queue

Add the label auto-merge to this PR to add it to the merge queue.

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has enabled the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

This stack of pull requests is managed by Graphite. Learn more about stacking.

fengmk2 added 3 commits March 28, 2026 14:37
…orce-migrate mode

In `rewriteStandaloneProject`, when `VITE_PLUS_FORCE_MIGRATE=1`:
- The pnpm overrides didn't include `vite-plus` itself (only vite, vitest, etc.)
- The devDependency wasn't updated if `vite-plus` already existed

This caused ecosystem-ci to install the published `vite-plus@0.1.14` instead of
the local `vite-plus@0.0.0` tgz, failing the `verify-install.ts` check.

Closes #1177
Ensures `vp check` passes when using vitest globals (`test.globals: true`)
with type-aware linting and `typescript/no-unsafe-call` rule enabled.
The vitest self-reference rewrite is already documented in BUNDLING.md.
fengmk2 added a commit to why-reproductions-are-required/vite-plus-vitest-global-type-minimal-repro that referenced this pull request Mar 28, 2026
@fengmk2
Copy link
Copy Markdown
Member Author

fengmk2 commented Mar 28, 2026

Copy link
Copy Markdown
Collaborator

@kazupon kazupon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants