阅读(213)
赞(23)
Webpack:解析器(Resolvers)
2023-05-11 14:20:39 更新
解析器是使用 enhanced-resolve
库创建的。Resolver
类 拓展了 tapable
类,并使用 tapable
来提供了一些钩子。 enhanced-resolve
可以直接用于创建新的解析器, 但是任何 compiler
实例
都有一些解析器实例,可以被 tap
进去。
在继续阅读之前,请确保你已经读过 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]
是上述三个解析器之一。
配置选项
上述解析器也可以 利用 resolve
或者 resolveLoader
选项,通过配置文件进行定制。这些选项允许 用户可以通过多种选项来更改解析行为,包括 通过解析 plugins
。
解析器插件,例如:DirectoryNamedPlugin
,可以直接引入 在 resolve.plugins
,而不是直接在 plugins configuration option
中使用。