IgnorePlugin

IgnorePlugin 阻止为与正则表达式或筛选函数匹配的 importrequire 调用生成模块

使用正则表达式

  • resourceRegExp:用于测试资源的 RegExp。
  • contextRegExp:用于测试上下文(目录)的 RegExp(可选)。
new webpack.IgnorePlugin({ resourceRegExp, contextRegExp });

使用过滤器函数

  • checkResource (resource, context) 过滤器函数,接收 resourcecontext 作为参数,必须返回布尔值。
new webpack.IgnorePlugin({
  checkResource(resource) {
    // do something with resource
    return true | false;
  },
});

忽略 Moment 地区设置的示例

moment 2.18 开始,所有地区设置都与核心库捆绑在一起(请参阅 此 GitHub 问题)。

传递给 IgnorePluginresourceRegExp 参数不会针对已解析的文件名或要导入或必需的绝对模块名称进行测试,而是针对 导入发生处的源代码中 传递给 requireimport字符串进行测试。例如,如果你尝试排除 node_modules/moment/locale/*.js,这将不起作用

-new webpack.IgnorePlugin({ resourceRegExp: /moment\/locale\// });

相反,因为 moment 使用此代码进行导入

require('./locale/' + name);

...你的第一个 regexp 必须匹配 './locale/' 字符串。然后使用第二个 contextRegExp 参数从进行导入的特定目录中进行选择。以下内容将导致忽略这些地区设置文件

new webpack.IgnorePlugin({
  resourceRegExp: /^\.\/locale$/,
  contextRegExp: /moment$/,
});

...这意味着“任何与 './locale' 匹配的 require 语句,来自以 'moment' 结尾的任何目录,都将被忽略”。

7 位贡献者

simon04byzykDullReferenceExceptionEugeneHlushkoFadySamirSadekiamakulovchenxsan