Support cache with external dependencies #1033
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.
Please Read the CONTRIBUTING Guidelines
In particular the portion on Commit Message Formatting
Please check if the PR fulfills these requirements
What kind of change does this PR introduce? (Bug fix, feature, docs update, ...)
What is the current behavior? (You can also link to an open issue here)
The babel-loader cache is disabled when there are external dependencies registered from the Babel plugin API
addExternalDependencies
What is the new behavior?
Still enable the cache if there are external deps. When the external deps are modified, the cache will be disgarded.
Does this PR introduce a breaking change?
If this PR contains a breaking change, please describe the following...
Other information:
This PR is reviving #984, it picks the tests from #984 but adopts a slightly different approach.
In #984 we generate timestamps and use that as a cache identifier. As is pointed out in #984 (comment), the cache will not be reused after the first run because of different cache identifiers (One for unknown externalDeps and the other for known externalDepsMtimes).
In this PR we store the timestamps of external deps within the transform result and validate it against the new timestamps returned from the webpack API
_compilation.fileSystemInfo.getFileTimestamp
, so the first cache will be reused because there is no cache identifier changes as now we determine if the cache should be reused after reading the cache result.Closes #984, fixes #983.