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的事件

最新文章

  1. ajax删除DB数据
  2. SpringMVC核心分发器DispatcherServlet分析[附带源码分析]
  3. windows远程控制ubuntu---基于ssh
  4. Meta标签中的viewport属性及含义
  5. 关于IOS显示图片的一些注意事项
  6. Jmeter监控系统等资源,ServerAgent端口的修改
  7. PE 文件
  8. eclipse下使用java调用weka(转)
  9. DNS域欺骗攻击详细教程之Linux篇
  10. 关于table参数的一些问题
  11. cadence pcb 设计学习记录提纲
  12. vue-cli脚手架npm相关文件解读(2)webpack.prod.conf.js
  13. java课程设计-猜数游戏(201521123029 郑佳明)
  14. Signal ()函数详细介绍 Linux函数(转)
  15. 如何卸载wineQQ?
  16. Git分支操作——查看、新建、删除、提交、合并
  17. 涂抹mysql笔记-mysql性能调优和诊断
  18. 更改angular的默认端口
  19. BZOJ.4946.[NOI2017]蔬菜(贪心 离线)
  20. ExtJS 4.2 教程-07:Ext.Direct

热门文章

  1. MySQL数据库报1055错误
  2. LeetCode 双周赛 98,脑筋急转弯转不过来!
  3. 安卓逆向 HOOK 第二课 普通方法的HOOK
  4. CTF之WEB学习路线规划
  5. JZOJ 4308.长寿花
  6. js根据指定字段数据去重
  7. vue-seamless-scroll滚动加点赞衔接处数据不同步问题
  8. vue中所有的封装方式总结
  9. Vue学习笔记之Vue基础语法
  10. .Babylon格式的模型转化为glb模型,并使用ThreeJS加载显示