コンパイラフック

Compiler モジュールは、CLI または Node API を介して渡されたすべてのオプションを使用してコンパイルインスタンスを作成するメインエンジンです。プラグインを登録および呼び出すために Tapable クラスを拡張します。ほとんどのユーザー向けのプラグインは、最初に Compiler に登録されます。

webpack のプラグインを開発する場合、各フックがどこで呼び出されるかを知りたい場合があります。これを学習するには、webpack のソース全体で hooks.<フック名>.call を検索してください。

監視

Compiler は、ファイルシステムの監視と、ファイルが変更されたときの再コンパイルを行う 監視 をサポートしています。監視モードの場合、コンパイラは watchRunwatchCloseinvalid などの追加イベントを発行します。これは通常、開発 で、通常は webpack-dev-server などのツールの下で使用され、開発者が毎回手動で再コンパイルする必要がないようにします。監視モードは CLI を介して入力することもできます。

フック

次のライフサイクルフックが compiler によって公開されており、次のようにアクセスできます

compiler.hooks.someHook.tap('MyPlugin', (params) => {
  /* ... */
});

フックのタイプに応じて、tapAsync および tapPromise も利用できる場合があります。

フックタイプの詳細については、Tapable ドキュメント を参照してください。

環境

SyncHook

構成ファイルでプラグインを初期化した直後、コンパイラ環境の準備中に呼び出されます。

環境後

SyncHook

コンパイラ環境のセットアップが完了したとき、environment フックの直後に呼び出されます。

エントリオプション

SyncBailHook

webpack オプションの entry 構成 が処理された後に呼び出されます。

compiler.hooks.entryOption.tap('MyPlugin', (context, entry) => {
  /* ... */
});

プラグイン後

SyncHook

内部プラグインの初期セットアップ後に呼び出されます。

  • コールバックパラメーター: compiler

リゾルバー後

SyncHook

リゾルバーのセットアップが完了した後にトリガーされます。

  • コールバックパラメーター: compiler

初期化

SyncHook

コンパイラオブジェクトが初期化されたときに呼び出されます。

実行前

AsyncSeriesHook

コンパイラを実行する直前にフックを追加します。

  • コールバックパラメーター: compiler

実行

AsyncSeriesHook

records の読み取りを開始する前に、コンパイラにフックします。

  • コールバックパラメーター: compiler

監視実行

AsyncSeriesHook

新しいコンパイルがトリガーされた後、コンパイルが実際に開始される前に、監視モードでプラグインを実行します。

  • コールバックパラメーター: compiler

ノーマルモジュールファクトリー

SyncHook

NormalModuleFactory が作成された後に呼び出されます。

  • コールバックパラメーター: normalModuleFactory

コンテキストモジュールファクトリー

SyncHook

ContextModuleFactory が作成された後にプラグインを実行します。

  • コールバックパラメーター: contextModuleFactory

コンパイル前

AsyncSeriesHook

コンパイルパラメーターが作成された後にプラグインを実行します。

  • コールバックパラメーター: compilationParams

compilationParams 変数は次のように初期化されます

compilationParams = {
  normalModuleFactory,
  contextModuleFactory,
};

このフックを使用して、コンパイルパラメーターを追加/変更できます

compiler.hooks.beforeCompile.tapAsync('MyPlugin', (params, callback) => {
  params['MyPlugin - data'] = 'important stuff my plugin will use later';
  callback();
});

コンパイル

SyncHook

beforeCompile の直後、新しいコンパイルが作成される前に呼び出されます。このフックは、子コンパイラにはコピーされません

  • コールバックパラメーター: compilationParams

このコンパイル

SyncHook

コンパイルの初期化中、compilation イベントを発行する直前に実行されます。このフックは、子コンパイラにはコピーされません

  • コールバックパラメーター: compilation, compilationParams

コンパイル

SyncHook

コンパイルが作成された後にプラグインを実行します。

  • コールバックパラメーター: compilation, compilationParams

作成

AsyncParallelHook

コンパイルの完了前に実行されます。このフックは、子コンパイラにはコピーされません

  • コールバックパラメーター: compilation

コンパイル後

AsyncSeriesHook

コンパイルの完了およびシールの後に呼び出されます。

  • コールバックパラメーター: compilation

発行すべきか

SyncBailHook

アセットの発行前に呼び出されます。発行するかどうかを示すブール値を返す必要があります。

  • コールバックパラメーター: compilation
compiler.hooks.shouldEmit.tap('MyPlugin', (compilation) => {
  // return true to emit the output, otherwise false
  return true;
});

発行

AsyncSeriesHook

アセットを出力ディレクトリに発行する直前に実行されます。このフックは、子コンパイラにはコピーされません

  • コールバックパラメーター: compilation

発行後

AsyncSeriesHook

アセットを出力ディレクトリに発行した後に呼び出されます。このフックは、子コンパイラにはコピーされません

  • コールバックパラメーター: compilation

アセット発行済み

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>
  }
);

完了

AsyncSeriesHook

コンパイルが完了したときに実行されます。このフックは、子コンパイラにはコピーされません

  • コールバックパラメーター: stats

追加パス

AsyncSeriesHook

このフックを使用すると、ビルドの追加パスをもう 1 つ実行できます。

失敗

SyncHook

コンパイルが失敗した場合に呼び出されます。

  • コールバックパラメーター: error

無効

SyncHook

監視中のコンパイルが無効になったときに実行されます。このフックは、子コンパイラにはコピーされません

  • コールバックパラメーター: fileName, changeTime

監視終了

SyncHook

監視中のコンパイルが停止したときに呼び出されます。

シャットダウン

AsyncSeriesHook

コンパイラが閉じるときに呼び出されます。

インフラストラクチャログ

SyncBailHook

infrastructureLogging オプション を介して構成で有効になっている場合に、インフラストラクチャロギングを使用できるようにします。

  • コールバックパラメーター: name, type, args

ログ

SyncBailHook

有効になっている場合は stats にログを記録できるようにします。 stats.logging, stats.loggingDebug および stats.loggingTrace オプション を参照してください。

  • コールバックパラメーター: origin, logEntry

8 貢献者

rishantagarwalbyzykmadhavarshneymisterdevEugeneHlushkosuperburritochenxsansnitin315