fix: handle addWatchFile in load hooks #14967
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.
Description
fix #3474
The
_addedImports
of the plugin context only exists for each hook in isolation, e.g.load()
andtransform()
. InimportAnalysis.ts
, we handle_addedImports
in thetransform()
hook, so onlyaddWatchFile
intransform()
hook works.load()
was always being ignored.This PR saves the
_addedImports
fromload()
(cached viaModuleNode
weak map), and re-instates in thetransform()
hook later.NOTE: this is not supported for CSS, looks like we hardcode dependency handling for our CSS plugin only.
Additional context
https://rollupjs.org/plugin-development/#this-addwatchfile
I also tried supporting this in
resolveId()
as the Rollup docs mention that it supports it, however I reverted it (see 3rd commit) as it doesn't seem to work in Rollup (vite build --watch
). Plus the implementation to support inresolveId()
has a few downsides:resolveId
doesn't guarantee aModuleNode
yet, we have to cache by theid
string (unable to GC)resolveId
can be called but we don't necessarily want to load it. Saving the_addedImports
could pollute subsequentload
+transform
What is the purpose of this pull request?
Before submitting the PR, please make sure you do the following
fixes #123
).