npm 包 tapable-proxy 使用教程

阅读时长 6 分钟读完

什么是 tapable-proxy?

tapable-proxy 是一个 Tapable 钩子的代理包装工具,它可以通过该工具,更方便地添加和删除钩子,并且可以提供一些常用的钩子的封装,使 Tapable 的使用更加简便。

使用方法

安装

使用 npm 命令进行安装:

引入

在项目中使用引入 Tapable 和 tapable-proxy:

或者可以使用 CommonJS 的方式:

基本使用

tapable-proxy 提供了两个类:Hook 和 Plugin,Hook 代表了一个钩子,类似于 Tapable 中的 Hook,Plugin 则代表了一个插件。

下面我们来看一下如何使用它们。

Hook

创建一个 Hook,首先我们需要定义一个钩子名称:

我们可以通过 tap 方法向钩子添加一个函数:

通过 call 方法触发这个钩子,它会按照添加的函数的顺序依次执行:

输出结果为:

Plugin

我们还需要使用 Plugin 来添加和删除钩子。

首先创建一个 Plugin:

使用 apply 方法添加一个函数:

现在,我们再次触发钩子:

此时,输出结果为:

我们也可以使用 remove 方法来从钩子上删除一个函数:

再次触发钩子:

此时,输出结果为:

常用的钩子封装

tapable-proxy 还提供了一些常用钩子和插件的封装。

AsyncSeriesHook

AsyncSeriesHook 是一个用于异步串行调用的钩子,tapable-proxy 中提供了它的封装:

-- -------------------- ---- -------
----- - -------------------- - - -------------
----- ----------------- - --- ------------------------------------------

---------------------------------- ----- -- -- -
  -------------------------
  ------ ------------------
---

---------------------------------- ----- -- -- -
  -------------------------
  ------ ------------------
---

------------------------------ -- -
  ------------------------
---

上面的例子中,我们使用 AsyncSeriesHookProxy 封装了一个 AsyncSeriesHook。

使用 tap 方法向钩子添加函数,使用 callAsync 方法触发钩子。

最后一个参数是回调函数,当钩子全部执行完毕后,会调用该回调函数。

SyncHook

SyncHook 是一个用于同步调用的钩子,tapable-proxy 中提供了它的封装:

-- -------------------- ---- -------
----- - ------------- - - -------------
----- ---------- - --- ----------------------------

--------------------------- -- -- -
  -------------------------
---

--------------------------- -- -- -
  -------------------------
---

------------------

使用 SyncHookProxy 封装了一个 SyncHook。

使用 tap 方法向钩子添加函数,使用 call 方法触发钩子。

其他钩子

以上只是 tapable-proxy 封装的两个常用钩子,除此之外,tapable-proxy 还提供了以下钩子的封装:

  • AsyncParallelHook
  • AsyncParallelBailHook
  • AsyncSeriesLoopHook
  • AsyncSeriesWaterfallHook
  • SyncBailHook

你可以通过阅读 tapable-proxy 的文档,学习更多的钩子的使用方法。

深度学习

在实际开发中,我们经常需要使用 Tapable 工具去扩展和修改 webpack 的行为。而 tapable-proxy 更是能帮助我们更加便捷地使用 Tapable 工具。

使用 tapable-proxy,你可以简化 Tapable 的 API,并且使用它提供的封装好的钩子。

通过使用 tapable-proxy,你可以将更多精力放在扩展和修改 webpack 的行为上,而不用像使用 Tapable 的时候那样需要关注各种 API 的使用方法。

结语

通过本文的介绍,你学习了如何使用 tapable-proxy 来更方便地使用 Tapable 工具,并且了解了 tapable-proxy 提供的一些常用的钩子的封装示例。

希望本文能对你的前端开发提供一些帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600673e2fb81d47349e53e1a

纠错
反馈