fix(types): add explicit extension for ESM compatibility #1417
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hello 👋
When consuming
vitest/config
from my own project which is using ESM ("type": "module"
),defineConfig
is seen asany
.I think this is because
vitest
is itself using ESM, so the types definition files have to use explicit paths when importing/exporting local files.I think the issue was never detected before because the types definition files outside of
config.d.ts
andnode.d.ts
are all flattened and don't import/export local files.I already encountered this issue here: tinyhttp/tinyhttp#359
What's a bit strange in your case is that TypeScript seems to see the types, but
@typescript-eslint
can't (it relies in TypeScript itself for types resolution 🤔):Anyway, I think if you are declaring your module as ESM and you are writing it in TypeScript, it's a best practice (or even a requirement?) to use explicit paths in the import/export statements for local files.