Справочник по хукам компилятора
Модуль Compiler является основным движком, создающим экземпляр компиляции со всеми опциями, переданными через CLI или Node API. Он расширяет класс Tapable, чтобы регистрировать и вызывать плагины. Большинство плагинов, доступных пользователю, сначала регистрируются в 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.
environment
SyncHook
Вызывается при подготовке среды компилятора, сразу после инициализации плагинов в файле конфигурации.
afterEnvironment
SyncHook
Вызывается сразу после хука environment, когда настройка среды компилятора завершена.
entryOption
SyncBailHook
Вызывается после обработки entry конфигурации из опций webpack.
compiler.hooks.entryOption.tap('MyPlugin', (context, entry) => {
/* ... */
}); afterPlugins
SyncHook
Вызывается после настройки начального набора внутренних плагинов.
- Параметры обратного вызова:
compiler
afterResolvers
SyncHook
Вызывается после завершения настройки разрешителей.
- Параметры обратного вызова:
compiler
initialize
SyncHook
Вызывается при инициализации объекта компилятора.
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,
}; Этот хук может быть использован для добавления/модификации параметров компиляции:
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
Выполняется при отправке актива. Предоставляет доступ к информации об отправленном активе, такой как путь к выводу и содержимое в байтах.
- Параметры обратного вызова:
file,info
Например, вы можете получить доступ к буферу содержимого актива с помощью info.content:
compiler.hooks.assetEmitted.tap(
'MyPlugin',
(file, { content, source, outputPath, compilation, targetPath }) => {
console.log(content); // <Buffer 66 6f 6f 62 61 72>
}
); done
AsyncSeriesHook
Выполняется по завершении компиляции. Этот хук не копируется в дочерние компиляторы.
- Параметры обратного вызова:
stats
additionalPass
AsyncSeriesHook
Этот хук позволяет сделать ещё один дополнительный проход сборки.
failed
SyncHook
Вызывается, если компиляция завершается неудачно.
- Параметры обратного вызова:
error
invalid
SyncHook
Выполняется, когда компиляция в режиме отслеживания становится недействительной. Этот хук не копируется в дочерние компиляторы.
- Параметры обратного вызова:
fileName,changeTime
watchClose
SyncHook
Вызывается при остановке компиляции в режиме отслеживания.
shutdown
AsyncSeriesHook
Вызывается при закрытии компилятора.
infrastructureLog
SyncBailHook
Позволяет использовать инфраструктурный логгирование, если оно включено в конфигурации через infrastructureLogging опцию.
- Параметры обратного вызова:
name,type,args
log
SyncBailHook
Позволяет вести журнал в статистику, если включено, см. stats.logging, stats.loggingDebug и stats.loggingTrace опции.
- Параметры обратного вызова:
origin,logEntry
© JS Foundation and other contributors
Licensed under the Creative Commons Attribution License 4.0.
https://webpack.js.org/api/compiler-hooks