W3cubDocs

/webpack

Compiler Hooks

The Compiler module is the main engine that creates a compilation instance with all the options passed through the CLI or Node API. It extends the Tapable class in order to register and call plugins. Most user facing plugins are first registered on the Compiler.

This module is exposed as webpack.Compiler and can be used directly. See this example for more information.

When developing a plugin for webpack, you might want to know where each hook is called. To learn this, search for hooks.<hook name>.call across the webpack source

Watching

The Compiler supports watching which monitors the file system and recompiles as files change. When in watch mode, the compiler will emit the additional events such as watchRun, watchClose, and invalid. This is typically used in development, usually under the hood of tools like webpack-dev-server, so that the developer doesn't need to re-compile manually every time. Watch mode can also be entered via the CLI.

Hooks

The following lifecycle hooks are exposed by the compiler and can be accessed as such:

compiler.hooks.someHook.tap(/* ... */);

Depending on the hook type, tapAsync and tapPromise may also be available.

For the description of hook types, see the Tapable docs.

entryOption

SyncBailHook

Executes a plugin after the entry configuration from webpack options has been processed.

afterPlugins

SyncHook

Runs a plugin after setting up initial set of plugins.

Parameters: compiler

afterResolvers

SyncHook

Executes a plugin after resolver setup is complete.

Parameters: compiler

environment

SyncHook

Runs a plugin before the environment is prepared.

afterEnvironment

SyncHook

Executes a plugin a environment setup is complete.

beforeRun

AsyncSeriesHook

Adds a hook right before compiler.run() is executed.

Parameters: compiler

run

AsyncSeriesHook

Hook into the compiler before it begins reading records.

Parameters: compiler

watchRun

AsyncSeriesHook

Executes a plugin during watch mode after a new compilation is triggered but before the compilation is actually started.

Parameters: compiler

normalModuleFactory

SyncHook

Runs a plugin after a NormalModuleFactory is created.

Parameters: normalModuleFactory

contextModuleFactory

Runs a plugin after a ContextModuleFactory is created.

Parameters: contextModuleFactory

beforeCompile

AsyncSeriesHook

Executes a plugin after compilation parameters are created.

Parameters: compilationParams

compile

SyncHook

Hook into the compiler before a new compilation is created.

Parameters: compilationParams

thisCompilation

SyncHook

Executed before emitting the compilation event (see below).

Parameters: compilation

compilation

SyncHook

Runs a plugin after a compilation has been created.

Parameters: compilation

make

AsyncParallelHook

...

Parameters: compilation

afterCompile

AsyncSeriesHook

...

Parameters: compilation

shouldEmit

SyncBailHook

Can return true/false at this point

Parameters: compilation

emit

AsyncSeriesHook

Before emitting assets to output dir

Parameters: compilation

afterEmit

AsyncSeriesHook

After emitting assets to output dir

Parameters: compilation

done

AsyncSeriesHook

Compilation has completed.

Parameters: stats

failed

SyncHook

Compilation has failed.

Parameters: error

invalid

SyncHook

Watch compilation has been invalidated.

Parameters: fileName, changeTime

watchClose

SyncHook

Watch mode has stopped.

© JS Foundation and other contributors
Licensed under the Creative Commons Attribution License 4.0.
https://webpack.js.org/api/compiler-hooks