(fix) emitCss: use deterministic css file names #30
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.
I have read over the thread you mentioned on my previous pull request (webpack/watchpack#25) and It struck me that there is another issue with the current implementation:
If you run webpack multiple times over the same Svelte file, the output hash is different each time. If you take out the <style> tag, then the hash remains the same. This happens because a new temporary css file with a random name is generated each time. This could prove annoying to developers using code splitting or relying on output files including [hash] (https://medium.com/react-weekly/code-chunking-with-webpack-a-pragmatic-approach-e17e8bcc6453).
I think a safe approach would be to use
ast.hash
as part of the temporary file name:The downside is that the
tmp
package cannot be used to generate files without the random bits (it uses mkstmp under the hood) and thus it should be removed, but it also did a cleanup of the temp files when the process exited. Without this, the /tmp folder is cleaned only after a system reboot. I'm not sure how important this is.