关于webpack(v5.74.0)的钩子在插件中的应用

news2025/2/28 6:35:55

常用监听钩子

compiler 钩子

compiler.hooks.entryOption

在 webpack 选项中的 entry 被处理过之后调用。一般用来获取入口。

compiler.hooks.compile

beforeCompile 之后立即调用,但在一个新的 compilation 创建之前。这个钩子 不会 被复制到子编译器。能获取到normalModuleFactory和contextModuleFactory。

compiler.hooks.make

在这里插入图片描述

编译结束前,这个钩子 不会 被复制到子编译器。一般在操作资源时会用到。也会用来添加入口。
在这里插入图片描述

compiler.hooks.afterCompile

compilation 结束和封印之后执行。

Compiler.hooks.thisCompilation

初始化 compilation 时调用,在触发 compilation 事件之前调用。这个钩子 不会 被复制到子编译器。

compiler.hooks.compilation

compilation 创建之后执行。此阶段设置依赖对应的解析模板。可以获取到compilation和normalModuleFactory。

compiler.hooks.emit

输出 asset 到 output 目录之前执行。这个钩子 不会 被复制到子编译器。

compilation 钩子

Compilation.hooks.additionalAssets

可以获取此次编译的hash值。

compilation.hooks.processAssets

asset 处理,该阶段可以修改或删除编译的资源,此时获取的是assets原对象,如下图所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

一般是要获取原资源的时候调用。

compilation.hooks.runtimeRequirementInChunk

操作运行时的模块。
在这里插入图片描述
在这里插入图片描述

compilation.hooks.additionalTreeRuntimeRequirements

添加运行时的依赖。
在这里插入图片描述

NormalModuleFactory Hooks

normalModuleFactory.hooks.factorize

在初始化解析依赖路径之前调用。它应该返回 undefined 以继续。

normalModuleFactory.hooks.module

在创建 NormalModule 实例后调用。可以获取到当前解析的模块。
在这里插入图片描述

normalModuleFactory.hooks.parser

在创建 Parser 实例后触发。

JavascriptParser Hooks

parser.hooks.expression

监听一段表达式,实现对表达式的处理。
在这里插入图片描述

parser.hooks.evaluateIdentifier

当用作判断的时候触发。在这里插入图片描述

parser.hooks.import

import xxx from xxx时触发
在这里插入图片描述

parser.hooks.statementIf

在解析 if 语句时触发;作用等同于 statement,但仅在 statement.type == ‘IfStatement’ 时触发。

if (a) { // 触发钩子
}

parser.hooks.program

所有代码都会被放入。可以查找自己需要的node,通过添加依赖的方式修改代码。
在这里插入图片描述
在这里插入图片描述

parser.hooks.call

执行函数的时候触发。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/39056.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++智能指针之shared_ptr

C智能指针之shared_ptr前言一、Shared_ptr1.1 shared_ptr类的操作1.2 make_shared函数1.3 shared_ptr的拷贝赋值1.4 shared_ptr的自动销毁对象内存机制1.5 使用动态生存期的资源的类1.6 shared_ptr与new结合使用1.7 不要混合使用普通/智能指针1.8 不要使用 get 初始化另一个智能…

Keras深度学习实战(38)——图像字幕生成

Keras深度学习实战(38)——图像字幕生成0. 前言1. 模型与数据集分析1.1 数据集分析1.2 模型分析2. 实现图像字幕生成模型2.1 数据集加载与预处理2.2 模型构建与训练3. 使用束搜索生成字幕3.1 束搜索原理3.2 利用束搜索改进预测结果小结系列链接0. 前言 …

Springboot——Controller层开发、请求与响应、RESTful开发规范

目录 一、入门案例(小了解,没啥用) 1.1 创建Springboot工程 1.2 导入maven坐标 1.3 controller层代码 1.4 postman测试 二、 REST常用注解 2.1 Controller 2.2 RequestMapping(请求映射路径) 2.3 Response…

Python学习基础笔记十三——函数

1、函数的定义: 函数是一段具有特定功能的、可重用的语句组。 说明:过程语言,程序员是按照顺序一行一行的编写代码,然后是顺序执行,很容易出现大量重复的代码行,那么有人就考虑将相同的代码提取出来&…

Mybatis源码解析(六):查询数据库主流程

Mybatis源码系列文章 手写源码(了解源码整体流程及重要组件) Mybatis源码解析(一):环境搭建 Mybatis源码解析(二):全局配置文件的解析 Mybatis源码解析(三):映射配置文件的解析 Mybatis源码解析(四):s…

.NET 6 支持Cookie与JWT混合认证、授权的方法

从.NET 5开始,.Net Core 与.NET Fremework 合并成了 .NET 5,所以标题也很让人尴尬,不知道该写成是.NET Core还是.NET X。因为这个方法支持.NET 5、6、7。 目录前言Cookie 认证JWT认证总结前言 不知道大家有没有过这样的需求,为了…

基于matlab的异步(感应)电机直接转矩控制系统

目 录 摘要 I 第1章 绪论 1 1.1 课题研究背景 1 1.2直接转矩控制技术的发展现状 1 1.2.1直接转矩控制的现状及发展趋势 1 1.2.2目前的热点研究问题及解决方法 2 1.3本文研究的主要内容 3 第2章 直接转矩控制系统理论 4 2.1概述 4 2.2 异步电动机的数学模型 4 2.3 逆变器的数学模…

【机器学习项目实战10例】(三):基于K近邻的葡萄酒质量检测项目

💥 项目专栏:【机器学习项目实战10例】 文章目录 一、基于K近邻的葡萄酒质量检测项目二、数据集介绍三、导包四、读取数据五、绘制空间分布六、划分训练集、测试集七、构建K近邻模型八、绘制聚类效果九、网格搜索一、基于K近邻的葡萄酒质量检测项目 葡萄酒数据集是一个经典…

[附源码]SSM计算机毕业设计实验教学过程管理平台JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Ajax复习(62nd)

1、 Ajax 基础 1.1 传统网站中存在的问题 1、网速慢的情况下,页面加载时间长,用户只能等待 2、表单提交后,如果一项内容不合格,需要重新填写所有表单内容 3、页面跳转,重新加载页面,造成资源浪费&#xf…

基于matlab的BOC调制信号捕获仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法描述 随着全球导航卫星系统的高速发展,导航系统的数量也越来越多,比如使用最广泛的GPS导航系统,以及越来越备受关注的中国北斗导航系统等.因此导航频段变得越来越拥挤,且各个频段内的信号相互…

activiti-api-impl

activiti-api-impl目录概述需求:设计思路实现思路分析1.CommonModelAutoConfiguration2.RuntimeEventImpl3.ProcessModelAutoConfiguration4.DefaultServiceTaskBehavior5.APIVariableInstanceConverterTaskModelAutoConfiguration参考资料和推荐阅读Survive by day…

Flutter高仿微信-第53篇-群聊-删除并退出

Flutter高仿微信系列共59篇,从Flutter客户端、Kotlin客户端、Web服务器、数据库表结构、Xmpp即时通讯服务器、视频通话服务器、腾讯云服务器全面讲解。 详情请查看 效果图: 实现代码: //删除并退出对话框 void _deleteAndExistDialog(){Load…

图解LeetCode——1752. 检查数组是否经排序和轮转得到(难度:简单)

一、题目 给你一个数组 nums 。nums 的源数组中,所有元素与 nums 相同,但按非递减顺序排列。 如果 nums 能够由源数组轮转若干位置(包括 0 个位置)得到,则返回 true ;否则,返回 false 。 源数…

一文了解Linux上TCP的几个内核参数调优

Linux作为一个强大的操作系统,提供了一系列内核参数供我们进行调优。光TCP的调优参数就有50多个。在和线上问题斗智斗勇的过程中,笔者积累了一些在内网环境应该进行调优的参数。在此分享出来,希望对大家有所帮助。 调优清单 好了&#xff0…

Java#27(Arrays)

目录 一.Arrays 操作数组的工具类 二.Lambda表达式 1.注意: 2.省略规则 一.Arrays 操作数组的工具类 方法名 作用 public static String toString(数组) 把数组拼接…

大数据毕设选题 - 深度学习动物识别与检测系统( python opencv)

文章目录0 前言1 深度学习实现动物识别与检测2 卷积神经网络2.1卷积层2.2 池化层2.3 激活函数2.4 全连接层2.5 使用tensorflow中keras模块实现卷积神经网络3 YOLOV53.1 网络架构图3.2 输入端3.3 基准网络3.4 Neck网络3.5 Head输出层4 数据集准备4.1 数据标注简介4.2 数据保存5 …

kafka集群搭建与prometheus监控配置

文章目录1、基于zookeeper的集群2、kafka集群安装2.1 基于Zookeeper集群的配置2.2 基于KRaft模式集群的配置2.3、启动Kafka集群3、kafka_exporter监控组件安装3.1、安装3.2、系统服务3.3、集成到prometheus4、与Grafana集成1、基于zookeeper的集群 下载地址:https:…

ABAP学习笔记之——第三章:OPEN SQL和NATIVE SQL

一、SAP R/3体系结构 SAP R/3一个分为三层:数据库层、应用层、表示层。其中应用层和数据库层由一个系统构成。 表示层:表示层(Presentation Layer)简单来讲其实就是指个人PC,是保存构成SAPGUI(GraphicalUserInterface)的软件组件(Software Co…

数字验证学习笔记——SystemVerilog芯片验证10 ——类的成员

一、类和成员 类是成员变量和成员方法的载体,之所以称为自洽体,是因为其变量和方法应符合‘聚拢’原则,即一个类的功能应该尽可能简单,不应承担过多的职责,更不应该承担不符合它的职责,这在设计模式被称为…