Resolvers

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

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

Types

compiler 类上提供了三种类型的内置解析器

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

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

compiler.resolverFactory.hooks.resolver
  .for('[type]')
  .tap('name', (resolver) => {
    // you can tap into resolver.hooks now
    resolver.hooks.result.tap('MyPlugin', (result) => {
      return result;
    });
  });

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

有关挂钩及其描述的完整列表,请参阅 enhanced-resolve 文档

配置选项

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

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

2 位贡献者

EugeneHlushkochenxsan