enable webpack sideEffects for css and scss files #3805
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
Closes #3397
Marks EUI's *.css and *.scss files as having sideEffects when they are imported by webpack. Setup I tested with:
package.json
webpack.config.js
src/index.js
dist/index.html
First confirmed that the css imports were tree-shaken away, and the page left unstyled. Then I manually applied the change in this PR to node_modules/@elastic/eui/package.json and rebuilt, confirming the expected styles were then present.
This change somewhat makes the assumption that the usual css-loader/style-loader configuration is used, which does follow our consuming.md documentation. If the files are instead processed with a loader like css modules, turning them into
import Styles from '...'
, then there is technically no side effect, as the contents are handled elsewhere - but this change would have no effect as they are already imported. However, this change could in theory bloat applications which are configured to use css modules but have animport '@elastic/eui/dist/some_theme.css';
as that would have previously been [correctly] tree shaken out. My concern for that case is barely measurable 😁/cc @clintandrewhall
Checklist
- [ ] Check against all themes for compatibility in both light and dark modes- [ ] Checked in mobile- [ ] Checked in IE11 and Firefox- [ ] Props have proper autodocs- [ ] Added documentation- [ ] Checked Code Sandbox works for the any docs examples- [ ] Added or updated jest tests- [ ] Checked for accessibility including keyboard-only and screenreader modes