vite icon indicating copy to clipboard operation
vite copied to clipboard

fix: respect `mainFields` when resolving browser/module field (fixes #8659)

Open sapphi-red opened this issue 1 year ago • 5 comments

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.

sapphi-red avatar Sep 11 '22 13:09 sapphi-red

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.

patak-dev avatar Sep 11 '22 18:09 patak-dev

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.

antfu avatar Sep 12 '22 00:09 antfu

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.

sheremet-va avatar Sep 12 '22 05:09 sheremet-va

Thanks for the feedback. @sapphi-red what do you think about renaming to resolve.browserField and release it in 3.2?

patak-dev avatar Sep 12 '22 08:09 patak-dev

Yeah, sounds good to me. I've update the PR 👍

sapphi-red avatar Sep 12 '22 10:09 sapphi-red