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命令,就能在终端看到结果
相关推荐
子兮曰7 小时前
OpenClaw入门:从零开始搭建你的私有化AI助手
前端·架构·github
吴仰晖7 小时前
使用github copliot chat的源码学习之Chromium Compositor
前端
1024小神7 小时前
github发布pages的几种状态记录
前端
阿蒙Amon9 小时前
TypeScript学习-第10章:模块与命名空间
学习·ubuntu·typescript
AI绘画哇哒哒9 小时前
【干货收藏】深度解析AI Agent框架:设计原理+主流选型+项目实操,一站式学习指南
人工智能·学习·ai·程序员·大模型·产品经理·转行
不像程序员的程序媛9 小时前
Nginx日志切分
服务器·前端·nginx
北原_春希10 小时前
如何在Vue3项目中引入并使用Echarts图表
前端·javascript·echarts
尽意啊10 小时前
echarts树图动态添加子节点
前端·javascript·echarts
吃面必吃蒜10 小时前
echarts 极坐标柱状图 如何定义柱子颜色
前端·javascript·echarts
O_oStayPositive10 小时前
Vue3使用ECharts
前端·javascript·echarts