返回介绍

resolver

发布于 2019-05-27 04:54:18 字数 4072 浏览 1192 评论 0 收藏 0

resolver 是由 enhanced-resolve package 创建出来的。Resolver 类继承了 /doc/webpack-api-tapable 类,并且使用 /doc/webpack-api-tapable 提供的一些钩子。可以直接使用 enhanced-resolve package 创建一些新的 resolver,然而,所有的 compiler 实例 都有一些可以接触(tap into)到的 resolver 实例。

在继续阅读之前,请确保至少了解过 enhanced-resolve/doc/webpack-api-tapable 文档。

类型

compiler 类有三种类型的内置 resolver:

  • Normal:通过绝对路径或相对路径,解析一个模块。
  • Context:通过给定的 context 解析一个模块。
  • Loader:解析一个 webpack loader

根据需要,所有这些 compiler 用到的内置 resolver,都可以通过插件进行自定义:

compiler.resolverFactory.plugin('resolver [type]', resolver => {
  resolver.hooks.resolve.tapAsync('MyPlugin', params => {
    // ...
  })
})

其中 [type] 是上面提到的三个 resolver 之一,指定为:

  • normal
  • context
  • loader

完整的钩子和描述列表,请查看 enhanced-resolve 文档

配置选项

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

resolver 插件(例如 [DirectoryNamedPlugin] (https://github.com/shaketbaby/directory-named-webpack-plugin))可以直接包含在 resolve.plugins 中,而不是使用标准插件用法。注意,resolve 配置会影响 normalcontext 这两个 resolver,而 resolveLoader 则用于修改 loader resolver。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文