Support Webpack 5, drop copypasted webpack-virtual-modules #11
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.
It drops webpack-virtual-modules in favor of much more simple and sane setup described here: webpack/webpack#11074 (comment)
The setup works both for webpack 4 and 5. Emitted css reloads just fine on component change on both of them.
This PR changes make use of custom loader string,
virtualModules Mapwhich contain pairs*.svelte.{index}.css: contentandindexto prevent key overlaps when compiling concurrently for SSR and browser.The loader saves css string to the
virtualModules Mapand appends an import with custom loader string, relaunching svelte-loader with cssPath parameter, which makes it output css basically from the void (without a file) and pass it further to the.cssloaders chain.Every time css is read from the
virtualModules Mapit gets deleted to prevent leaks.I'm currently using this approach in
svelte-loader-hoton production.