解析器

解析器使用 enhanced-resolve 套件建立。Resolver 類別延伸 tapable 類別,並使用 tapable 提供一些 Hooks。enhanced-resolve 套件可以直接用來建立新的解析器,不過任何 編譯器 執行個體 都有一些解析器執行個體可以點選。

在繼續閱讀之前,請務必查看 enhanced-resolvetapable 文件。

類型

compiler 類別上有三種類型的內建解析器可供使用

  • normal:透過絕對或相對路徑解析模組。
  • context:在特定上下文中解析模組。
  • loader:解析 webpack loader

根據需要,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