首页 > 其他分享 >webpack插件开发备注

webpack插件开发备注

时间:2025-01-07 10:49:22浏览次数:1  
标签:插件 hooks compilation Webpack MyPlugin webpack 备注 compiler

在 Webpack 插件开发中,apply 方法是插件的核心入口。每个 Webpack 插件都是一个包含 apply 方法的对象,Webpack 在运行时会调用这个方法,将 Webpack 的编译器(compiler)对象作为参数传递给它,从而允许插件挂载到 Webpack 的事件系统中,并通过钩子影响打包过程。

class MyPlugin {
  apply(compiler) {
    // 注册一个钩子
    compiler.hooks.emit.tapAsync('MyPlugin', (compilation, callback) => {
      // 在资源输出阶段做点事情
      console.log('This is my plugin!');
      callback();
    });
  }
}

module.exports = MyPlugin;

 

关键生命周期钩子

beforeRunrun

在构建开始之前执行,适合清理工作或初始化操作。

compiler.hooks.beforeRun.tap('MyPlugin', (compiler) => {
  console.log('Webpack build is about to start!');
});

compilecompilation

  • compile 是一次新的编译开始时触发。
  • compilation 提供了对构建中间数据的访问,比如模块和依赖关系。
compiler.hooks.compilation.tap('MyPlugin', (compilation) => {
  compilation.hooks.optimize.tap('MyPlugin', () => {
    console.log('Assets are being optimized...');
  });
});

emit

  • 在生成文件到输出目录之前触发,适合修改或添加输出文件。
compiler.hooks.emit.tapAsync('MyPlugin', (compilation, callback) => {
  compilation.assets['new-file.txt'] = {
    source: () => 'This is the content of the new file.',
    size: () => 27,
  };
  callback();
});

done

  • 构建完成后触发,适合进行日志记录或清理工作。
compiler.hooks.done.tap('MyPlugin', (stats) => {
  console.log('Build is done!');
});

 

标签:插件,hooks,compilation,Webpack,MyPlugin,webpack,备注,compiler
From: https://www.cnblogs.com/94pm/p/18657047

相关文章

  • VS Code 好用的插件
    1.git代码提交记录,精确到每行记录对应负责人,安装GitLens插件 2.AI代码预测,安装 Tabnine:AIChat&AutocompleteforJavaScript,Python,Typescript,Java,PHP,Go,andmore插件,适用与多种语言3.AI代码预测,安装GitHubCopilot 插件,两种AI代码预测可以自行......
  • js tui-image-editor 使用,图片编辑插件
    效果查看地址https://ui.toast.com/tui-image-editorgithub地址https://github.com/nhn/tui.image-editorvue项目安装方式yarnadd@toast-ui/image-editorvue3使用demo<template><divclass="image-editor-container"><!--TUIImageEditor容器-......
  • 前端面试题(webpack高级配置!)
     所谓高级配置其实就是进行Webpack优化,让我们代码在编译/运行时性能更好~我们会从以下角度来进行优化:提升开发体验提升打包构建速度减少代码体积优化代码运行性能1.提升开发体验SourceMap1.为什么开发时我们运行的代码是经过webpack编译后的,例如下面这个样子:/*......
  • 给 Postgres 写一个向量插件 - 向量类型
    在这篇文章中,我们将为Postgres实现vector类型:CREATETABLEitems(vvector(3));Postgres扩展结构和pgrx包装器在实现它之前,让我们先看看典型的扩展结构,以及pgrx如何为我们简化它。典型的Postgres扩展可以大致分为2层:实现,通常使用C等低级语言完成。将实现......
  • 今年最火的comfy UI 插件节点超详细安装使用教程-有手就行的保姆级教程-网盘分享_comf
    大家好我是AIGC阿道夫今年最火的comfyUI插件节点超详细安装使用教程-有手就行的保姆级教程ComfyUI最受欢迎的排行榜最近制作了ComfyUI工作流管理器插件的作者开始了一个新项目,能扫描抓取并尝试安装插件,从而提供一些信息,最终目标是成为类似Python中的Pypi、Nodejs里的Np......
  • nvim番外之将配置的插件管理器更新为lazy
    在很久以前我写过关于nvim配置的文章,里面推荐使用packer作为插件管理器。但是在一年多以前,packer的仓库中出现这么一段文字Thisrepositoryiscurrentlyunmaintained.Forthetimebeing(asofAugust,2023),itisrecommendedtouseoneofthefollowingpluginmanag......
  • 本地(或自下载)浏览器插件 安装指南
    作者:京东科技贾玉龙1首先准备好安装包通过不用渠道下载所要安装插件的压缩包2安装流程第一步解压解压压缩包至文件夹中,请确保您的电脑上已安装解压工具,否则会解压失败1)mac系统中,双击压缩包即可完成解压。2)win系统解压工具可自行下载zip包解压工具2.1)安装后,可选中领航......
  • 写一个vite插件用来压缩图片
    在Vite中创建一个用于压缩图片的插件需要一些步骤。首先,你需要选择一个图片压缩库,如imagemin,然后使用该库在Vite的构建过程中处理图片资源。以下是一个简单的Vite插件示例,用于在构建过程中压缩图片:const{createFilter}=require('@rollup/pluginutils');constimagemin=r......
  • vite插件的执行顺序如何指定?
    在Vite中,插件的执行顺序可以通过指定插件对象的enforce属性来控制。这个属性可以设置为'pre'或'post',以调整插件的执行顺序。以下是关于Vite插件执行顺序的详细解答:enforce属性的作用:当enforce设置为'pre'时,该插件将会在Vite的核心插件之前执行。当不设置enforce属性时,插件......
  • vite为什么比webpack快?
    Vite比Webpack快的原因主要可以归结为以下几点:利用浏览器对ESM的原生支持:Vite直接利用了现代浏览器对ESModules(ESM)的原生支持。在开发环境下,这意味着Vite可以直接运行源代码,无需像Webpack那样先进行打包。由于省去了打包的过程,Vite的启动速度非常快。相比之下,Webpack需要将源代......