vite: Fix stale CSS emit by invalidating all modules #1066
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.
Sort of addresses #925. As mentioned in the issue, sometimes a single file ID is associated with more than 1 module, but we were only only invalidating the first module when a change in CSS was detected. This resulted in stale CSS that would only update with a server restart.
In the case of qwik, 2 modules are returned during the CSS invalidation step, one that matches the file ID, and a 2nd one that has the
?direct
param on it, which I think has something to do with vite's SSR mode, though I'm not particularly knowledgeable on that front, and I can't find any explicit documentation about it. I do however believe that this new behaviour of invalidating all modules is more correct than before.This fix results in a page reload and up-to-date CSS, but doesn't go as far as to implement CSS HMR, nor do I think it is the responsibility of the VE plugin to do so.