webpack tapable库中的同步异步钩子 开发一款实用的插件

本文介绍了webpack的核心库Tapable,它用于实现插件间的串行事件流。通过Tapable,我们可以创建和控制在webpack事件流上的钩子。文章详细讲解了compiler和compilation对象的角色,以及它们在webpack编译过程中的作用。同时,讨论了SyncHook和AsyncSeriesHook等钩子类型,并展示了它们如何应用于插件开发中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

剧透下我们的插件 empty-webpack-build-detail-plugin 友好的展示编译输出 ,如果您觉得好用 ,可以给个star 

Webpack本质上是一种串行事件流的机制,它的工作流程就是将各个插件串联起来,实现这一切的核心就是Tapable

webpack中最核心的负责编译的Compiler和负责创建bundle的Compilation都是Tapable的实例

compiler 对象是 webpack 的编译器对象,webpack 的核心就是编译器
compiler 对象会在启动 webpack 的时候被一次性的初始化,
compiler 对象中包含了所有 webpack 可自定义操作的配置,
例如 loader 的配置,plugin 的配置,entry 的配置等各种原始 webpack 配置等,
在 webpack 插件中的自定义子编译流程中,我们肯定会用到 compiler 对象中的相关配置信息,
我们相当于可以通过 compiler 对象拿到 webpack 的主环境所有的信息。


compilation 对象负责生成编译资源

compilation 实例继承于 compiler,
compilation 对象代表了一次单一的版本 webpack 构建和生成编译资源的过程。
当运行 webpack 开发环境中间件时,每当检测到一个文件变化,一次新的编译将被创建,
从而生成一组新的编译资源以及新的 compilation 对象。
一个 compilation 对象包含了 当前的模块资源、编译生成资源、变化的文件、以及 被跟踪依赖的状态信息。
编译对象也提供了很多关键点回调供插件做自定义处理时选择使用。

简单

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值