[Web] Add wasm and mjs files to package.json exports to improve bundler support #26394
+92
−2
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.
Description
Currently the files which are needed for wasm aren't exported from the package at all.
The files in question are:
This PR changes that and adds them to
exportsfield in thepackage.json.Motivation and Context
Bundlers like
webpackuse thecopyPluginto move those files into thepublicdirectory, so the files can be accessed by a stable url. However more advanced and "state of the art" bundlers likeviteare able to import asset urls directly. Vite takes the asset, moves it to to public assets folder (possibily renames the asset and adds a hash etc.). The imported value then is the bundled assets final url.Those urls can then be used in the
env.wasm.wasmPathsdirectly. In vites case the full code example is:With those added exports we can leverage more of the bundlers capabilities and in vites case there isn't any need to add any additional configs. It would just work.
When importing we also get proper suggestions:

I would like additional tests to ensure that the exports are available, but I couldn't make the
e2etests work on my system. I would appreciate some guidance on that topic.