• 关于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

    执行函数的时候触发。

  • 相关阅读:
    训练数据不够怎么造?yolo5 最有用的trick 之数据增强详解
    ffmpeg安装及使用
    【LeetCode】在非有序数组中使用二分
    第十章-项目沟通管理
    2021 中国系统java面试笔试题(含面试题解析)
    what‘s the meaning of csu in glibc
    Mask R-CNN
    DAY02+ROS工作空间创建
    公司大数据智能管理平台密码不正确 Hue平台进不去
    基于Matlab构建适用于无人机或四轴飞行器的IMU+GPS融合算法(附源码)
  • 原文地址:https://blog.csdn.net/qq_35094120/article/details/127987756