これは、Webpackによって内部的に使用されるプラグインのリストです。
内部プラグインのカテゴリ
コンパイラの環境に影響を与えるプラグイン。
webpack.node.NodeEnvironmentPlugin()
コンパイラにNode.jsスタイルのファイルシステムを適用します。
コンパイラに影響を与えるプラグイン
MemoryCachePlugin()
コンパイラにキャッシュを追加し、モジュールをメモリにキャッシュします。
ProgressPlugin(handler)
コンパイラにフックして進捗情報を抽出します。handler
は function(percentage, message)
というシグネチャを持つ必要があります。Percentage は 0~1 の値で呼び出され、0 は開始、1 は終了を示します。
RecordIdsPlugin()
モジュールとチャンクIDをレコードから保存および復元します。
コンパイルにエントリチャンクを追加するプラグイン。
EntryPlugin(context, entry, options)
コンパイル時にエントリチャンクを追加します。チャンクの名前は options.name
で、1つのモジュール(と依存関係)のみが含まれます。モジュールは context
(絶対パス)の entry
から解決されます。
PrefetchPlugin(context, request)
より並列的なコンパイルを可能にするために、request
と依存関係をプリフェッチします。チャンクは作成しません。モジュールは context
(絶対パス)の request
から解決されます。
JsonpTemplatePlugin(options)
チャンクはJSONP呼び出しにラップされます。ローディングアルゴリズムはエントリチャンクに含まれています。<script>
タグを追加することでチャンクをロードします。
options
は出力オプションです。
options.jsonpFunction
はJSONP関数です。
options.publicPath
はチャンクのロードパスとして使用されます。
options.chunkFilename
はチャンクが期待されるファイル名です。
node/NodeTemplatePlugin(options)
チャンクは、バンドルされたモジュールをエクスポートするNode.jsモジュールにラップされます。エントリチャンクは、それらをrequireすることでチャンクをロードします。
options
は出力オプションです。
options.chunkFilename
はチャンクが期待されるファイル名です。
LibraryTemplatePlugin(name, target)
エントリチャンクは、type
タイプのライブラリname
を形成するように装飾されます。
webworker/WebWorkerTemplatePlugin(options)
チャンクはimportScripts
でロードされます。それ以外はJsonpTemplatePlugin
と同様です。
options
は出力オプションです。
各モジュールを// @sourceURL
で注釈されたeval
でラップすることで、モジュールテンプレートを装飾します。
SourceMapDevToolPlugin(sourceMapFilename, sourceMappingURLComment, moduleFilenameTemplate, fallbackModuleFilenameTemplate)
各チャンクのソースマップを生成することでテンプレートを装飾します。
sourceMapFilename
ソースマップのファイル名テンプレート。[hash]
、[name]
、[id]
、[file]
、[filebase]
が置換されます。この引数が欠けている場合、ソースマップはDataUrlとしてインライン化されます。
HotModuleReplacementPlugin(options)
ホットモジュール置換のサポートを追加します。テンプレートを装飾してランタイムコードを追加します。module.hot
APIを追加します。
options.hotUpdateChunkFilename
ホットアップデートチャンクのファイル名。
options.hotUpdateMainFilename
ホットアップデートマニフェストのファイル名。
options.hotUpdateFunction
ホットアップデートのJSON関数名。
モジュールのソースコードに影響を与えるプラグイン。
webpack_public_path、webpack_require、webpack_modules、webpack_chunk_load をアクセス可能にします。require.valueOf
と require.onError
が他のプラグインによって処理されないことを保証します。
現在役に立ちません。他のモジュールローダーとの互換性を確保します。
if (...)
文と三項演算子内の式を評価して、パーサーによって発行されるフックを使用して、true
/false
で置き換え、さらなるデッドブランチの削除を可能にします。
デッドブランチに関する複数の最適化が本番モードで行われます。
Webpackは条件文の評価を試みます。成功すると、デッドブランチが削除されます。Webpackは、コンパイラが認識しない限り、定数畳み込みを行うことができません。例えば
import { calculateTax } from './tax';
const FOO = 1;
if (FOO === 0) {
// dead branch
calculateTax();
}
上記の例では、Webpackはブランチの刈り込みを行うことができませんが、Terserは行います。ただし、FOO
がDefinePluginを使用して定義されている場合、Webpackは成功します。
import { calculateTax } from './tax';
も刈り取られることに注意してください。なぜならcalculateTax()
の呼び出しはデッドブランチにあり、削除されたからです。
ProvidePlugin(name, request)
モジュールでname
が使用されている場合、require(<request>)
でロードされたモジュールで満たされます。
NodeStuffPlugin(options, context)
通常Node.jsモジュールで使用可能なものを提供します。
また、使用している場合、module
にいくつかのNode.jsのものを追加します。
require.jsで通常使用可能なものを提供します。
require[js].config
は削除されます。require.version
は0.0.0
です。requirejs.onError
はrequire.onError
にマップされます。
node/NodeSourcePlugin(options)
このモジュールは、非Node.js環境では使用できないNode.jsのものを追加します。
使用されている場合、process
、console
、Buffer
、global
のポリフィルを追加します。また、組み込みのNode.js置換モジュールもバインドします。
node/NodeTargetPlugin()
バンドルをNode.js環境で実行する場合、このプラグインを使用する必要があります。
バンドルされている場合でも、ネイティブモジュールが正しくロードされることを保証します。
dependencies/AMDPlugin(options)
モジュールにAMDスタイルのdefine
とrequire
を提供します。また、require.amd
、define.amd
、webpack_amd_options##をパラメーターとして渡されたoptions
にバインドします。
dependencies/CommonJsPlugin
モジュールにCommonJsスタイルのrequire
を提供します。
dependencies/RequireContextPlugin(modulesDirectories, extensions)
require.context
を提供します。パラメーターmodulesDirectories
とextensions
は、ファイルの代替リクエストを見つけるために使用されます。リゾルバーに提供する配列と同じ配列を提供するのに役立ちます。
dependencies/RequireEnsurePlugin()
require.ensure
を提供します。
dependencies/RequireIncludePlugin()
require.include
を提供します。
DefinePlugin(definitions)
識別子に対して定数を定義します。
definitions
はオブジェクトです。
webpack.optimize
名前空間下のすべてのプラグインは、mode
が'none'
に設定されている場合にのみ使用する必要があります。それ以外の場合は、プラグインが2回適用されるため、問題が発生する可能性があります。
optimize/LimitChunkCountPlugin(options)
チャンク数をoptions.maxChunks
より少なくマージします。
各チャンクのオーバーヘッドはoptions.chunkOverhead
で指定するか、デフォルトの10000を使用します。エントリチャンクのサイズはoptions.entryChunkMultiplicator
(または10)倍されます。
合計サイズを最も削減するチャンクが最初にマージされます。複数の組み合わせが等しい場合は、マージされた最小サイズが優先されます。
optimize/MergeDuplicateChunksPlugin()
同じモジュールを含むチャンクがマージされます。
optimize/RemoveEmptyChunksPlugin()
すべての親チャンクに含まれるモジュールが、チャンクから削除されます。
optimize/MinChunkSizePlugin(minChunkSize)
各チャンクがminChunkSize
の最小サイズになるまで、チャンクがマージされます。
ModuleConcatenationPluginページ を参照してください。
optimize/FlagIncludedChunksPlugin()
チャンクに含まれるチャンクのチャンクIDを追加します。これにより、不要なチャンクの読み込みがなくなります。
optimize/RealContentHashPlugin()
optimization.realContentHash
オプションが有効になっている場合、webpackは内部的にRealContentHashPlugin
をコンパイラに適用します。
RealContentHashPlugin
は、ハッシュの更新をカスタマイズするためのupdateHash
5.8.0+フックを提供します。
const webpack = require('webpack');
const RealContentHashPlugin = webpack.optimize.RealContentHashPlugin;
// ...
compiler.hooks.compilation.tap('MyPlugin', (compilation) => {
const hooks = RealContentHashPlugin.getCompilationHooks(compilation);
hooks.updateHash.tap('MyPlugin', (content, oldHash) => {
// you can calculate the hash here as you wish
});
});