知海

解析器(Resolvers)

webpackjsorg-mainAPI 参考

解析器(Resolvers)

解析器是使用 enhanced-resolve 包创建的。Resolver 类扩展了 tapable 类,并使用 tapable 提供一些钩子。enhanced-resolve 包可以用于直接创建新的解析器,但任何 compiler 实例 都有一些可以 tap 进入的解析器实例。

在继续阅读之前,请务必查看 enhanced-resolvetapable 文档。

类型

compiler 类上有三种内置解析器类型:

  • normal:通过绝对路径或相对路径解析模块。
  • context:在给定上下文内解析模块。
  • loader:解析 webpack loader

根据需要,compiler 使用的这些内置解析器中的任何一个都可以通过插件进行自定义:

js 复制代码
compiler.resolverFactory.hooks.resolver
  .for("normal")
  .tap("MyResolverPlugin", (resolver) => {
    resolver.hooks.result.tap("MyResolverPlugin", (result) => result);
  });

其中 [type] 是上面提到的三种解析器之一。

参见 enhanced-resolve 文档 获取完整的钩子列表及其说明。

配置选项

上面提到的解析器也可以通过配置文件中的 resolveresolveLoader 选项进行自定义。这些选项允许用户通过多种选项(包括 resolve plugins)来更改解析行为。

解析器插件(例如 DirectoryNamedPlugin)可以直接包含在 resolve.plugins 中,而不是直接用于 plugins 配置选项

注意: resolve 配置影响 normalcontext 解析器,而 resolveLoader 用于修改 loader 解析器。

帮助我们改进文档

发现翻译问题或内容错误?请告诉我们。