Description
Describe the problem
We have been using esbuild for a while now with Cockpit, and recently we found that it includes a bundle analyzer. Our bundle is great large (uncompressed) so it would be interesting to see if we can make it smaller.
(If you want to see this in action, upload this meta.json file to the esbuild bundle analyzer).
What stands out is the 1.5 mb of react-styles which are imported, this project (cockpit-machines) does not use a Masthead
component but the css is still imported.
The bundle analyzer can also show why something is imported
So importing Table/index.js
imports
import { useOUIAProps, handleArrows, setTabIndex } from '@patternfly/react-core';
The problem here is that @patternfly/react-core
is a barrel file, so importing it this way imports @patternfly/react-core/dist/js/index.js
:
[jelle@t14s][~/projects/cockpit-machines]%cat -p node_modules/@patternfly/react-core/dist/esm/index.js
export * from './components';
export * from './layouts';
export * from './helpers';
export * from './styles';
//# sourceMappingURL=index.js.map
So basically it imports all of PatternFly, esbuild seems to be smart enough to not include unused JavaScript but it seems it doesn't handle CSS.
An easy fix would be for react-table
to import for example setTabIndex
from react-core/dist/js/helpers/KeyboardHandler.js
directly.
Metadata
Metadata
Assignees
Type
Projects
Status