IgnorePlugin は、正規表現またはフィルター関数に一致する `import` または `require` 呼び出しのモジュールの生成を防ぎます
new webpack.IgnorePlugin({ resourceRegExp, contextRegExp });new webpack.IgnorePlugin({
checkResource(resource) {
// do something with resource
return true | false;
},
});moment 2.18 以降、すべてのロケールはコアライブラリと一緒にバンドルされています(この GitHub の issue を参照)。
`IgnorePlugin` に渡される `resourceRegExp` パラメータは、解決されたファイル名またはインポートまたは要求されている絶対モジュール名に対してテストされるのではなく、インポートが行われているソースコード内で `require` または `import` に渡される*文字列*に対してテストされます。たとえば、`node_modules/moment/locale/*.js` を除外しようとしても、これは機能しません
-new webpack.IgnorePlugin({ resourceRegExp: /moment\/locale\// });むしろ、`moment` はこのコードでインポートされるため
require('./locale/' + name);最初の正規表現は'./locale/'という文字列に一致する必要があります。2つ目のcontextRegExpパラメータは、インポート元の特定のディレクトリを選択するために使用されます。以下の設定では、これらのロケールファイルは無視されます。
new webpack.IgnorePlugin({
resourceRegExp: /^\.\/locale$/,
contextRegExp: /moment$/,
});これは、「'moment'で終わるディレクトリからの'./locale'に一致するすべてのrequire文は無視される」ことを意味します。