Webpack学习——Plugin(插件)

仅作为学习记录,通过 apply 方法注册到钩子,在特定节点执行自定义逻辑,干预打包流程

一、原理

所有 Webpack 插件都必须是 一个类,且包含 apply 方法(Webpack 会自动调用这个方法),核心逻辑:

  1. 插件被加载时,Webpack 传入 Compiler 实例(全局唯一);
  2. 插件在 apply 方法中,通过 Compiler.hooks.xxx.tap() 注册到指定钩子;
  3. 当打包流程走到该钩子时,Webpack 执行插件注册的逻辑。

二、 自定义Plugin

写一个 "打印打包开始和结束" 的插件

  1. 创建LogPlugin.js
javascript 复制代码
// 插件必须是类,类名建议大写开头
class LogPlugin {
  // Webpack 会自动调用 apply 方法,传入 Compiler 实例
  apply(compiler) {
    // 1. 注册到 "compile" 钩子(开始编译时触发,同步钩子用 tap)
    compiler.hooks.compile.tap("LogPlugin", () => {
      console.log("打包开始啦!");
    });

    // 2. 注册到 "done" 钩子(打包完成时触发,同步钩子用 tap)
    compiler.hooks.done.tap("LogPlugin", (stats) => {
      // stats 是打包统计信息,包含打包耗时、模块数等
      const time = stats.endTime - stats.startTime;
      console.log(`打包完成!总耗时:${time}ms`);
    });
  }
}

// 导出插件,供 Webpack 配置使用
module.exports = LogPlugin;
  1. 在 webpack.config.js 中使用插件
  2. 执行 npm run build命令,就能在终端看到结果
相关推荐
GISer_Jing43 分钟前
WebGL跨端兼容实战:移动端适配全攻略
前端·aigc·webgl
迦南giser1 小时前
前端性能——传输优化
前端
小白_ysf1 小时前
Vue 中常见的加密方法(对称、非对称、杂凑算法)
前端·vue.js·算法
人工智能训练7 小时前
【极速部署】Ubuntu24.04+CUDA13.0 玩转 VLLM 0.15.0:预编译 Wheel 包 GPU 版安装全攻略
运维·前端·人工智能·python·ai编程·cuda·vllm
会跑的葫芦怪8 小时前
若依Vue 项目多子路径配置
前端·javascript·vue.js
微露清风8 小时前
系统性学习Linux-第二讲-基础开发工具
linux·运维·学习
阳光九叶草LXGZXJ9 小时前
达梦数据库-学习-48-DmDrs控制台命令(同步之Manager、CPT模块)
linux·运维·数据库·sql·学习
biuyyyxxx10 小时前
Python自动化办公学习笔记(一) 工具安装&教程
笔记·python·学习·自动化
pas13611 小时前
40-mini-vue 实现三种联合类型
前端·javascript·vue.js
摇滚侠11 小时前
2 小时快速入门 ES6 基础视频教程
前端·ecmascript·es6