CC 4.0 许可证

本节内容源自以下链接的内容,并受 CC BY 4.0 许可证的约束。

如果没有特别说明,以下内容可以假定为基于原始内容的修改和删除的结果。

ContextReplacementPlugin

Context 指的是 require 或动态 import(),其表达式类似于 require('./locale/' + name + '.json')。当遇到这样的表达式时,Rspack 会推断目录 ('./locale/') 和正则表达式 (/^.*\.json$/)。由于名称在编译时未知,Rspack 会将每个文件作为模块包含在包中。

ContextReplacementPlugin 允许您覆盖推断的信息。有多种方法可以配置该插件。

选项

  • 类型
new rspack.ContextReplacementPlugin(
  resourceRegExp: RegExp,
  newContentResource?: string,
  newContentRecursive?: boolean,
  newContentRegExp?: RegExp
)

如果资源(目录)与 resourceRegExp 匹配,插件将分别使用 newContentResourcenewContentRecursivenewContextRegExp 替换默认资源、递归标志或生成的正则表达式。如果 newContentResource 是相对的,它将相对于之前的资源解析。

示例

基本用例

new rspack.ContextReplacementPlugin(/moment[/\\]locale$/, /de|fr|hu/);

moment/locale 上下文仅限于与 /de|fr|hu/ 匹配的文件。因此只包含这些语言环境 (有关更多信息,请参阅 此问题)。

其他选项

newContentResourcenewContentCreateContextMap 参数也可使用。

new rspack.ContextReplacementPlugin(
  resourceRegExp: RegExp,
  newContentResource: string,
  newContentCreateContextMap: object // mapping runtime-request (userRequest) to compile-time-request (request)
);

这两个参数可以一起使用来更具针对性地重定向请求。newContentCreateContextMap 允许您以对象的格式将运行时请求映射到编译时请求。

new rspack.ContextReplacementPlugin(/selector/, './folder', {
  './request': './request',
  './other-request': './new-request',
});