-
-
Notifications
You must be signed in to change notification settings - Fork 6.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: sourcemapIgnoreList for optimizedDeps #12633
Conversation
Run & review this pull request in StackBlitz Codeflow. |
await loadOptimizedDep(sourcemapPath, depsOptimizer), | ||
) as SourceMap | ||
|
||
applySourcemapIgnoreList( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Instead of rewriting the sourcemap when serving it, wouldn't it make sense to consider the ignore list predicate when initially generating the optimized dep?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I thought about it, but we don't have the .map in memory to modify it. See #12622, we needed to go back to let esbuild write the files to disk directly because there was a perf regression.
We would also need to start using sourcemapIgnoreList.toString()
in the hash key for optimization given our current architecture. That could work though.
If we want to do it, I think we should still do it lazily to avoid blocking giving the optimized deps to the browser. But that means that if the process is stopped, we may end up with inconsistent results.
So I see three options:
a. Current approach in this PR, and we accept the JSON.parse/JSON.stringify cost (I think this could be fine)
b. Current approach, but we don't use JSON.parse/JSON.stringify and instead use regexes to grab the sources
array and then inject after it the ignoreSourcemapList
.
c. We add sourcemapIgnoreList
to the deps cache key, and when we do the first JSON.parse, we also add a marker like "__vite": "sourcemapIgnorList_done",
. So next time we load it, we can use a regex to know it has been processed.
Leaning towards b. if there is a regression perf after this PR. cc @bluwy @sapphi-red
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My opinion is to go with "a." for now because I guess this is not a hot path.
One more option would be to create a feature request / PR to esbuild for adding sourcemap ignore list feature.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the explanation. I'd also heavily lean towards "a." unless there's a serious performance problem.
Description
Fixes #12630
Reference
What is the purpose of this pull request?