The Compilation
module is used by the Compiler
to create new compilations (or builds). A compilation
instance has access to all modules and their dependencies (most of which are circular references). It is the literal compilation of all the modules in the dependency graph of an application. During the compilation phase, modules are loaded, sealed, optimized, chunked, hashed and restored.
The Compilation
class also extends Tapable
and provides the following lifecycle hooks. They can be tapped the same way as compiler hooks:
compilation.hooks.someHook.tap(/* ... */);
As with the compiler
, tapAsync
and tapPromise
may also be available depending on the type of hook.
buildModule
SyncHook
Triggered before a module build has started.
Parameters: module
rebuildModule
SyncHook
Fired before rebuilding a module.
Parameters: module
failedModule
SyncHook
Run when a module build has failed.
Parameters: module
error
succeedModule
SyncHook
Executed when a module has been built successfully.
Parameters: module
finishModules
SyncHook
All modules have been built.
Parameters: modules
finishRebuildingModule
SyncHook
A module has been rebuilt.
Parameters: module
seal
SyncHook
Fired when the compilation stops accepting new modules.
unseal
SyncHook
Fired when a compilation begins accepting new modules.
optimizeDependenciesBasic
SyncBailHook
...
Parameters: modules
optimizeDependencies
SyncBailHook
Fired at the beginning of dependency optimization.
Parameters: modules
optimizeDependenciesAdvanced
SyncBailHook
...
Parameters: modules
afterOptimizeDependencies
SyncHook
...
Parameters: modules
optimize
SyncHook
Triggered at the beginning of the optimization phase.
optimizeModulesBasic
SyncBailHook
...
Parameters: modules
optimizeModules
SyncBailHook
...
Parameters: modules
optimizeModulesAdvanced
SyncBailHook
...
Parameters: modules
afterOptimizeModules
SyncHook
...
Parameters: modules
optimizeChunksBasic
SyncBailHook
...
Parameters: chunks
optimizeChunks
SyncBailHook
Optimize the chunks.
Parameters: chunks
optimizeChunksAdvanced
SyncBailHook
...
Parameters: chunks
afterOptimizeChunks
SyncHook
Fired after chunk optimization has completed.
Parameters: chunks
optimizeTree
AsyncSeriesHook
Optimize the dependency tree asynchronously.
Parameters: chunks
modules
afterOptimizeTree
SyncHook
...
Parameters: chunks
modules
optimizeChunkModulesBasic
SyncBailHook
...
Parameters: chunks
modules
optimizeChunkModules
SyncBailHook
...
Parameters: chunks
modules
optimizeChunkModulesAdvanced
SyncBailHook
...
Parameters: chunks
modules
afterOptimizeChunkModules
SyncHook
...
Parameters: chunks
modules
shouldRecord
SyncBailHook
...
reviveModules
SyncHook
Restore module information from records.
Parameters: modules
records
optimizeModuleOrder
SyncHook
Sort the modules in from most to least important.
Parameters: modules
advancedOptimizeModuleOrder
SyncHook
...
Parameters: modules
beforeModuleIds
SyncHook
...
Parameters: modules
moduleIds
SyncHook
...
Parameters: modules
optimizeModuleIds
SyncHook
...
Parameters: chunks
afterOptimizeModuleIds
SyncHook
...
Parameters: chunks
reviveChunks
SyncHook
Restore chunk information from records.
Parameters: modules
records
optimizeChunkOrder
SyncHook
Sort the chunks in from most to least important.
Parameters: chunks
beforeOptimizeChunkIds
SyncHook
Fired before chunk id
optimization.
Parameters: chunks
optimizeChunkIds
SyncHook
Optimize the id
of each chunk.
Parameters: chunks
afterOptimizeChunkIds
SyncHook
Triggered after chunk id
optimization has finished.
Parameters: chunks
recordModules
SyncHook
Store module info to the records.
Parameters: modules
records
recordChunks
SyncHook
Store chunk info to the records.
Parameters: chunks
records
beforeHash
SyncHook
Before the compilation is hashed.
afterHash
SyncHook
After the compilation is hashed.
recordHash
SyncHook
...
Parameters: records
record
SyncHook
Store information about the compilation
to the records
.
Parameters: compilation
records
beforeModuleAssets
SyncHook
...
shouldGenerateChunkAssets
SyncBailHook
...
beforeChunkAssets
SyncHook
Before creating the chunk assets.
additionalChunkAssets
SyncHook
Create additional assets for the chunks.
Parameters: chunks
records
SyncHook
...
Parameters: compilation
records
additionalAssets
AsyncSeriesHook
Create additional assets for the compilation. This hook can be used to download an image, for example:
compilation.hooks.additionalAssets.tapAsync('MyPlugin', callback => { download('https://img.shields.io/npm/v/webpack.svg', function(resp) { if(resp.status === 200) { compilation.assets['webpack-version.svg'] = toAsset(resp); callback(); } else { callback(new Error('[webpack-example-plugin] Unable to download the image')); } }); });
optimizeChunkAssets
AsyncSeriesHook
Optimize any chunk assets. The assets are stored in compilation.assets
. A Chunk
has a property files
which points to all files created by a chunk. Any additional chunk assets are stored in compilation.additionalChunkAssets
.
Parameters: chunks
Here's an example that simply adds a banner to each chunk.
compilation.hooks .optimizeChunkAssets .tapAsync('MyPlugin', (chunks, callback) => { chunks.forEach(chunk => { chunk.files.forEach(file => { compilation.assets[file] = new ConcatSource( '\/**Sweet Banner**\/', '\n', compilation.assets[file] ); }); }); callback(); });
afterOptimizeChunkAssets
SyncHook
The chunk assets have been optimized.
Parameters: chunks
Here's an example plugin from @boopathi that outputs exactly what went into each chunk.
compilation.hooks.afterOptimizeChunkAssets.tap('MyPlugin', chunks => { chunks.forEach(chunk => { console.log({ id: chunk.id, name: chunk.name, includes: chunk.modules.map(module => module.request) }); }); });
optimizeAssets
AsyncSeriesHook
Optimize all assets stored in compilation.assets
.
Parameters: assets
afterOptimizeAssets
SyncHook
The assets has been optimized.
Parameters: assets
needAdditionalSeal
SyncBailHook
...
afterSeal
AsyncSeriesHook
...
chunkHash
SyncHook
...
Parameters: chunk
chunkHash
moduleAsset
SyncHook
An asset from a module was added to the compilation.
Parameters: module
filename
chunkAsset
SyncHook
An asset from a chunk was added to the compilation.
Parameters: chunk
filename
assetPath
SyncWaterfallHook
...
Parameters: filename
data
needAdditionalPass
SyncBailHook
...
childCompiler
SyncHook
...
Parameters: childCompiler
compilerName
compilerIndex
normalModuleLoader
SyncHook
The normal module loader is the function that actually loads all the modules in the module graph (one-by-one).
Parameters: loaderContext
module
dependencyReference
SyncWaterfallHook
Compilation.hooks.dependencyReference(depRef, dependency, module)
allows to change the references reported by dependencies.
Parameters: depRef
dependency
module
© JS Foundation and other contributors
Licensed under the Creative Commons Attribution License 4.0.
https://webpack.js.org/api/compilation-hooks