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.
add
splitChunks.fallbackCacheGroup
add
splitChunks.hidePathInfo
move
contextify
into utilsadd some types
fixes #6991
see also #7455 #7456 #4908
This makes AggressiveSplittingPlugin obsolete.
What kind of change does this PR introduce?
feature
Did you add tests for your changes?
yes
Does this PR introduce a breaking change?
no
What needs to be documented once your changes are merged?
for
optimization.splitChunks
Using
maxSize
(either globallyoptimization.splitChunks.maxSize
, per cache groupoptimization.splitChunks.cacheGroups[x].maxSize
or for the fallback cache groupoptimization.splitChunks.fallbackCacheGroup.maxSize
) will try to split chunks bigger thanmaxSize
into smaller parts. Parts will be at leastminSize
(next tomaxSize
) in size. The algorithm is deterministic and changes to the modules will only have local impact (so it's usable when using long term caching and doesn't require records).maxSize
is only a hint and could be violated when modules are bigger thanmaxSize
or splitting would violateminSize
.maxSize
takes higher priority thanmaxInitialRequest
/maxAsyncRequests
.Priority:
maxInitialRequest
/maxAsyncRequests
<maxSize
<minSize
When the chunk already have a name, each part will get a new name derived from that name. Depending on the value of
optimization.splitChunks.hidePathInfo
it will add a key derived from the first module name or a hash of it.maxSize
is intended to be used with HTTP/2 and long term caching. It increase the request count for better caching. It could also be used to decrease the file size for faster rebuilding.