vite
vite copied to clipboard
fix: respect `mainFields` when resolving browser/module field (fixes #8659)
Description
Because resolve.mainFields
's default value does not include 'browser'
, I added a special !browser
value to avoid a breaking change.
https://vitejs.dev/config/shared-options.html#resolve-mainfields
In Vite 4, I think we could change the default value to ['browser', 'module', 'jsnext:main', 'jsnext']
.
fixes #8659
Additional context
What is the purpose of this pull request?
- [x] Bug fix
- [ ] New Feature
- [ ] Documentation update
- [ ] Other
Before submitting the PR, please make sure you do the following
- [x] Read the Contributing Guidelines.
- [x] Read the Pull Request Guidelines and follow the Commit Convention.
- [x] Check that there isn't already a PR that solves the problem the same way to avoid creating a duplicate.
- [x] Provide a description in this PR that addresses what the PR is solving, or reference the issue that it solves (e.g.
fixes #123
). - [ ] Ideally, include relevant tests that fail without this PR but pass with it.
I would prefer to directly wait for Vite 4 and fix this instead of adding the temporal !browser
option, but if @sheremet-va @antfu thinks fixing this is important enough for Vitest, I think you did a good call here Sapphi.
I think indeed the current behavior is a kinda flaw and the fix makes a lot of sense. As for the shipping, I think we could have the workaround (maybe via an option instead of a magic !browser
?), but I'll leave it to @sheremet-va to decide.
I think indeed the current behavior is a kinda flaw and the fix makes a lot of sense. As for the shipping, I think we could have the workaround (maybe via an option instead of a magic
!browser
?), but I'll leave it to @sheremet-va to decide.
I was also thinking about some resolve.browserField
option or something similar. !browser
feels magicky.
JFI: there is also https://github.com/vitejs/vite/pull/9860 PR that fixes similar problem.
Thanks for the feedback. @sapphi-red what do you think about renaming to resolve.browserField
and release it in 3.2?
Yeah, sounds good to me. I've update the PR 👍