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


    常用监听钩子

    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) { // 触发钩子
    }
    
    • 1
    • 2

    parser.hooks.program

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

    parser.hooks.call

    执行函数的时候触发。

  • 相关阅读:
    猿创征文 |【算法面试入门必刷】动态规划-线性dp(二)
    十九,镜面IBL--BRDF积分贴图
    王学岗——H265编码原理详解与码流分析
    2022年地理信息系统与遥感专业就业前景与升学高校排名选择
    zookeeper异常 Cannot open channel to 3 at election address
    谷歌浏览器如何设置和恢复纯黑界面
    瑞吉外卖Day06
    使用burp对Tomcat 弱密码爆破
    Apollo自动驾驶系统概述(文末参与活动赠送百度周边)
    PLC基本原理及其接线
  • 原文地址:https://blog.csdn.net/qq_35094120/article/details/127987756