Tech: do not generate ESM dist for preset files #22330
Merged
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.



Closes #21316
What I did
When TSup is bundling code, it will add a bit of require polyfill code to the output, when it encounters code referencing
requirein 1 of the entrypoints.It will add the polyfill code to all entrypoints, and will refuse to treeshake it out.
So I made en excemption for preset entries, to never get a mjs file generated, because those often have references to
requirein them.How to test
Run the build process and check for existence of this type of code in dist:
At least within the docs addon this no longer happens.
This code does impact all monorepo packages though, but I think that's fine. AFAIK we never use mjs exports of presets, always the cjs files.
Some day we'll convert everything over to ONLY ESM, and have all packages be type=module, but that's a project for future me.