Spec-Zone.ru › webpack 4

Компиляторские хуки

Модуль 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.

  • Параметры колбэка: context, entry
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

Spec-Zone.ru

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