[webpack] debugId on main entry file keeps changing due to other chunk
Environment
@sentry/[email protected]
Steps to Reproduce
- I have a multiple entry files (main.js, other_entry.js) and few other chunks (foo.js and bar.js). foo.js is uniquely generated per build.
-
other_entry.jsis usingfoo.js -
main.jsis usingbar.js
-
- Each chunk in the build will be generated with the name
[id].[contentHash].jsfor caching purposes - Since
foo.jskeeps changing on every build, thedebugIdgenerated formain.jsis affected - The
debugIdformain.jschanged changing the finalcontentHashand breaking the cache behaviour - The
debugIdforbar.jsremains constant
Apparently this happened due to the use of hash for generating debugId
new BannerPlugin({
raw: true,
include: /\.(js|ts|jsx|tsx|mjs|cjs)$/,
banner: (arg?: BannerPluginCallbackArg) => {
const debugId = arg?.chunk?.hash ? stringToUUID(arg.chunk.hash) : uuidv4();
return getDebugIdSnippet(debugId);
},
})
Expected Result
-
debugIDonmain.jsshould remain constant since the real file content doesn't change
Actual Result
-
debugIDformain.jschanged although the real content of the file doesn't change.
Suggestion
Probably good if we can have it generated based on contentHash instead of hash
Since foo.js keeps changing on every build, thedebugId generated for main.js is affected
Can you explain why changing foo.js affects the hash of main.js?
But in general you're probably right that we should use the content hash instead.
Can you explain why changing foo.js affects the hash of main.js?
Hmm, if I'm debugging it correctly, the cause for my case is due to chunk.hash for entry files seems to be generated using the child compilation
This issue has gone three weeks without activity. In another week, I will close it.
But! If you comment or otherwise update it, I will reset the clock, and if you remove the label Waiting for: Community, I will leave it alone ... forever!
"A weed is but an unloved flower." ― Ella Wheeler Wilcox 🥀