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文は無視される」ことを意味します。