解析器

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

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

类型

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