Spec-Zone.ru › webpack 5

Справочник по хукам компилятора

Модуль Compiler является основным движком, создающим экземпляр компиляции со всеми опциями, переданными через CLI или Node API. Он расширяет класс Tapable, чтобы регистрировать и вызывать плагины. Большинство плагинов, доступных пользователю, сначала регистрируются в Compiler.

При разработке плагина для webpack, вам может потребоваться узнать, где вызывается каждый хук. Для этого ищите hooks.<hook name>.call в исходном коде webpack.

Предупреждение

Начиная с webpack 5, hooks больше не являются расширяемыми. Используйте WeakMap, чтобы добавить пользовательские хуки.

Отслеживание

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.

  • Параметры обратного вызова: context, entry
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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API