Webpack:解析器(Resolvers)

2023-05-11 14:31 更新

解析器是使用 ?enhanced-resolve? 庫創(chuàng)建的。?Resolver? 類 拓展了 ?tapable? 類,并使用 ?tapable? 來提供了一些鉤子。 ?enhanced-resolve? 可以直接用于創(chuàng)建新的解析器, 但是任何 ?compiler? 實(shí)例 都有一些解析器實(shí)例,可以被 ?tap? 進(jìn)去。

在繼續(xù)閱讀之前,請確保你已經(jīng)讀過 ?enhanced-resolve? 和 ?tapable? 文檔。

類型

在 ?compiler? 類中,提供了三種類型的內(nèi)置解析器:

  • ?normal?: 通過絕對或相對路徑解析模塊。
  • ?context?: 在給定的上下文中解析模塊。
  • ?loader?: 解析 webpack loader。

根據(jù)需要,任一個被使用在 compiler 中的內(nèi)置解析器, 可以通過插件進(jìn)行定制:

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]? 是上述三個解析器之一。

配置選項(xiàng)

上述解析器也可以 利用 ?resolve? 或者 ?resolveLoader? 選項(xiàng),通過配置文件進(jìn)行定制。這些選項(xiàng)允許 用戶可以通過多種選項(xiàng)來更改解析行為,包括 通過解析 ?plugins?。

解析器插件,例如:?DirectoryNamedPlugin?,可以直接引入 在 ?resolve.plugins?,而不是直接在 ?plugins configuration option? 中使用。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號