feat(ui): better bundle size with esmodules #548
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.
What this does
I was doing some work optimizing the bundle size of the docs site and kept seeing that all of the UI library was being bundled in with the application, and I know that we are using esmodules for the site, which I thought would lead to tree-shaking of any component not used. This was not the case.
After digging into it, I found that rollup (which TSDX uses under the hood) offers an option for
preserveModules
which will let us output all of the components to their own folder underdist/
. This has given us a good amount of savings on the docs site of ~46kb 🗡️ 🔥 You can read a good thread about this here.Before:
After