Компиляторские хуки
Модуль Compiler является основным движком, который создаёт экземпляр компиляции со всеми опциями, переданными через CLI или Node API. Он расширяет класс Tapable для регистрации и вызова плагинов. Большинство плагинов, доступных пользователю, сначала регистрируются в Compiler.
Этот модуль экспонируется как
webpack.Compilerи может быть использован напрямую. Более подробную информацию можно найти в этом примере.
При разработке плагина для webpack, вам может быть интересно, где вызывается каждый хук. Для этого найдите hooks.<hook name>.call в исходном коде webpack.
Режим наблюдения
Compiler поддерживает режим наблюдения, который отслеживает файловую систему и перекомпилирует файлы при изменениях. В режиме наблюдения компилятор будет генерировать дополнительные события, такие как watchRun, watchClose, и invalid. Обычно это используется в режиме разработки, обычно под капотом инструментов, таких как webpack-dev-server, чтобы разработчик не нуждался в ручном перекомпилировании каждый раз. Режим наблюдения также может быть активирован через CLI.
Хуки
Следующие хуки жизненного цикла экспонируются модулем compiler и могут быть доступны следующим образом:
compiler.hooks.someHook.tap('MyPlugin', (params) => {
/* ... */
}); В зависимости от типа хука, tapAsync и tapPromise также могут быть доступны.
Для описания типов хуков обратитесь к документации Tapable.
entryOption
SyncBailHook
Вызывается после обработки entry конфигурации из опций webpack.
compiler.hooks.entryOption.tap('MyPlugin', (context, entry) => {
/* ... */
}); Параметры: context, entry
afterPlugins
SyncHook
Вызывается после настройки начального набора внутренних плагинов.
- Параметры колбэка:
compiler
afterResolvers
SyncHook
Вызывается после завершения настройки резолвера.
- Параметры колбэка:
compiler
environment
SyncHook
Вызывается при подготовке среды компилятора, сразу после инициализации плагинов в файле конфигурации.
afterEnvironment
SyncHook
Вызывается сразу после хука environment, когда настройка среды компилятора завершена.
beforeRun
AsyncSeriesHook
Добавляет хук непосредственно перед запуском компилятора.
- Параметры колбэка:
compiler
run
AsyncSeriesHook
Хук в компилятор перед началом чтения records.
- Параметры колбэка:
compiler
watchRun
AsyncSeriesHook
Выполняет плагин в режиме наблюдения после запуска новой компиляции, но перед фактическим началом компиляции.
- Параметры колбэка:
compiler
normalModuleFactory
SyncHook
Вызывается после создания NormalModuleFactory.
- Параметры колбэка:
normalModuleFactory
contextModuleFactory
SyncHook
Выполняет плагин после создания ContextModuleFactory.
- Параметры колбэка:
contextModuleFactory
beforeCompile
AsyncSeriesHook
Выполняет плагин после создания параметров компиляции.
- Параметры колбэка:
compilationParams
Переменная compilationParams инициализируется следующим образом:
compilationParams = {
normalModuleFactory,
contextModuleFactory,
compilationDependencies
}; Этот хук может быть использован для добавления/модификации параметров компиляции:
compiler.hooks.beforeCompile.tapAsync('MyPlugin', (params, callback) => {
params['MyPlugin - data'] = 'important stuff my plugin will use later';
callback();
});
compile
SyncHook
Вызывается сразу после beforeCompile, перед созданием новой компиляции.
- Параметры колбэка:
compilationParams
thisCompilation
SyncHook
Выполняется при инициализации компиляции, непосредственно перед выводом события compilation.
- Параметры колбэка:
compilation,compilationParams
compilation
SyncHook
Выполняет плагин после создания компиляции.
- Параметры колбэка:
compilation,compilationParams
make
AsyncParallelHook
Выполняется перед завершением компиляции.
- Параметры колбэка:
compilation
afterCompile
AsyncSeriesHook
Вызывается после завершения и завершения компиляции.
- Параметры колбэка:
compilation
shouldEmit
SyncBailHook
Вызывается перед выводом ресурсов. Должен вернуть булево значение, указывающее нужно ли выполнять вывод.
- Параметры колбэка:
compilation
compiler.hooks.shouldEmit.tap('MyPlugin', (compilation) => {
// return true to emit the output, otherwise false
return true;
});
emit
AsyncSeriesHook
Выполняется непосредственно перед выводом ресурсов в выходную директорию.
- Параметры колбэка:
compilation
afterEmit
AsyncSeriesHook
Вызывается после вывода ресурсов в выходную директорию.
- Параметры колбэка:
compilation
assetEmitted
AsyncSeriesHook
Позволяет получить байтовый контент выводимого ресурса. Доступно начиная с webpack v4.39.0
- Параметры колбэка:
file,content
done
AsyncSeriesHook
Выполняется при завершении компиляции.
- Параметры колбэка:
stats
failed
SyncHook
Вызывается, если компиляция завершается ошибкой.
- Параметры колбэка:
error
invalid
SyncHook
Выполняется, когда компиляция в режиме наблюдения была проинициализирована.
- Параметры колбэка:
fileName,changeTime
watchClose
SyncHook
Вызывается, когда компиляция в режиме наблюдения остановлена.
infrastructureLog
SyncBailHook
Позволяет использовать логирование инфраструктуры, когда оно включено в конфигурации через infrastructureLogging опцию.
- Параметры колбэка:
name,type,args
log
SyncBailHook
Позволяет вести логирование в stats, когда оно включено. Смотрите stats.logging, stats.loggingDebug и stats.loggingTrace опции.
- Параметры колбэка:
origin,logEntry
© JS Foundation and other contributors
Licensed under the Creative Commons Attribution License 4.0.
https://v4.webpack.js.org/api/compiler-hooks