Rehome moved requests to real on-disk files #1547
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.
When we're about to do default resolving outbound from a moved package, we need to rehome the request to the original location of the moved package. Previously, we did this by just replacing the moved package root with the original package root, leaving the within-package part of the part unchanged.
In general, this path doesn't actually exist on disk, but that didn't really matter to webpack. Unfortunately it does matter to vite, which for dubious reasons checks that the importing file actually exists before being willing to use it as the base for resolution.
So instead we need to rehome to a file that exists, so we'll use
package.json
like we generally do when we want to mean "from this package".However, we also need to undo this rehoming if the request falls through to our own fallback. Previously that was easy because we still had the true within-package path in the module specifier. Now we can't do that because we threw away the within-package part and replaced it with
package.json
, so instead we need to introduce a general mechanism for attaching metadata to requests.