解析器使用 enhanced-resolve
套件建立。Resolver
類別延伸 tapable
類別,並使用 tapable
提供一些 Hooks。enhanced-resolve
套件可以直接用來建立新的解析器,不過任何 編譯器
執行個體 都有一些解析器執行個體可以點選。
在繼續閱讀之前,請務必查看 enhanced-resolve
和 tapable
文件。
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
文件,以取得掛鉤和其說明的完整清單。
上述解析器也可以透過組態檔案自訂,使用 resolve
或 resolveLoader
選項。這些選項允許使用者透過各種選項變更解析行為,包括透過解析 plugins
。
解析器外掛程式(例如 DirectoryNamedPlugin
)可以直接包含在 resolve.plugins
中,而不是直接使用 plugins
組態選項。