Optimize Functions and Renderers for Webpack builds #72683
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.
Summary
Since Canvas uses an "indexed module" approach to organizing its source code, using our Functions and Renderers in any Webpack build (e.g. Storybook, Shareable Runtime, etc) means importing all Functions and Renderers, (regardless of it they're used). With Embeddables and Filters, that means importing a lot of extraneous code... Embeddables, for example, pulls in a lot of Kibana source code from all over the repo that isn't handled, like
html
from Angular.This reorganization of our Functions and Renderers allows us to import from a few new categories:
external
: functions that import source code from outside Canvas, (e.g. Kibana or other plugins)core
: renderers which are core to Canvas, (and simple in nature)filters
: renderers that are specific to filtering