27_wbpack_自定义Plugin

Tapable

要想学会自定义Plugin就要先了解Tapable这个库

在我们的wbpack中有两个非常重要的两个类Compiler和Compilation

他们是通过注入插件的方式,来监听webpack 的所有生命周期

在他们的示例中有很多个hooks,而hooks其实是创建了Tapable库中的各种Hook的实例

Tapable有哪些Hook呢?

同步:Sync

  • SyncHook
  • SyncBailHook
  • SyncWaterfallHook
  • SyncLoopHook

异步:Async

  • Paralle(并行)
    • AsyncParallelHook
    • AsyncParallelBailHook
  • Serise(串行)
    • AsyncSeriesHook
    • AsyncSeriesBailHook
    • AsyncSeriesWaterfallHook

 

同步和异步的

  • 以sync开头的,是同步的Hook
  • 以async开头的,两个事件处理回调,不会等待上一次处理回调结束后再执行下一次回调

类别

  • bail:当有返回值时,就不会执行后续的事件触发了
  • Loop:当返回值为true,就会反复执行该事件,当返回值为undefin或者不返回内容,就退出事件
  • Waterfall:当返回值不为undefined时,会将这次返回结果作为下次事件的第一个参数
  • Parallel:并行,会同时执行次事件处理回调结束,才执行下一次事件处理回调
  • Series:串行,会等待上一是异步的Hook

 

 

自定义Plugin

在我们的webpack中有很多的生命周期,我们的插件需要注册到webpack的生命周期当中,那么是如何注册的呢?

  • 在webpack函数的createCompiler方法中注册了所有的插件
  • 在注册插件的时候会调用插件函数或者插件对象的apply方法
  • 插件方法会接收compiler或者compilation对象,我们可以通过compiler或者compilation对象来注册Hook的事件
posted @ 2022-09-18 00:08  Mr-Hou88888  阅读(19)  评论(0编辑  收藏  举报