Webpack插件浅析

常用的webpack插件功能介绍:

1.HotModuleReplacementPlugin

模块热更新插件。Hot-Module-Replacement的热更新是依赖于webpack-dev-server,有时是在打包文件改变时更新打包文件或者重新加载刷新整个页面,HMR是只更新修改的部分。

HotModuleReplacementPlugin是webpack模块自带的,在plugins配置项中直接使用即可。

const webpack = require('webpack')
plugins: [  new webpack.HotModuleReplacementPlugin(), // 热更新插件]

02、html-webpack-plugin

html-webpack-plugin的主要作用就是在webpack构建后生成html文件,同时把构建好入口js文件引入到生成的html文件中。

03、clean-webpack-plugin

clean-webpack-plugin用于在打包前清理上一次项目生成的bundle文件,它会根据output.path自动清理文件夹。

04 、mini-css-extract-plugin

css提取插件

产生背景:在进行打包时,css代码会打包到js中,不利于文件缓存

作用:依据每个entry生成单个css文件(将css从js中提取出来)

loader和plugins的区别:

  *  loader是文件加载器,能够加载资源文件,并对文件进行一些处理,如编译压缩 等,最终一起打包到指定的文件中。
  * plugin赋予了webpack各种灵活的功能,如打包优化资源管理环境变量注入等,目的是为了解决loader无法实现的功能

  从上图可以看出:

  *  loader运行在项目打包之前;

  * plugins运行在整个项目的编译时期;

 在Webpack运行的整个生命周期中会广播出许多事件,Plugin会监听这些事件,在合适的事件通过 webpack 提供的 api 改变输出结果。

对于 loader 而言,它实质上是一个转换器,将A文件编译成B文件,操作的是 文件 ,比如将A文件编译成B文件,单纯的是一个文件转换过程。

参考:webpack(四)——webpack里面的plugin和loader的区别 - 颗就完了 - 博客园 (cnblogs.com)

### Webpack 插件钩子机制详解 #### 钩子机制概述 Webpack 的核心特性之一在于其强大的插件系统,这使得开发者能够自定义构建过程。WebPack 使用一种称为“钩子”的机制来允许插件在特定的时间点执行代码。这些时间点可以是在编译开始之前、完成之后或是其他任何有意义的时刻。 #### 基本概念 - **同步钩子(Sync Hooks)**:当触发条件满足时立即按顺序调用所有注册函数。 - **异步钩子(Async Hooks)**:支持并行或串行处理任务,在所有回调完成后继续流程[^3]。 #### 实现方式 为了实现这种灵活性,Webpack 设计了一套基于事件驱动架构的工作流模型。每当发生某些预设的动作(如启动编译),就会发出相应的信号通知已订阅该动作的所有监听器去响应。例如 `html-webpack-plugin` 就利用了这一特点,在每次成功打包后会自动注入最新的资源链接到HTML模板中[^2]。 #### 生命周期挂钩 不同类型的插件可以在 Webpack 编译的不同阶段介入工作。以 `clean-webpack-plugin` 为例,它绑定了 emit 这一关键时刻——即即将写入文件系统的那一刻清除旧版输出目录的内容,从而确保新版本不会受到遗留文件的影响[^4]。 ```javascript const { CleanWebpackPlugin } = require('clean-webpack-plugin'); module.exports = { plugins: [ new CleanWebpackPlugin() ] }; ``` 对于更复杂的场景,则可能涉及到多个钩子组合使用的情况。此时就需要深入理解各个钩子之间的关系以及它们在整个编译过程中所处的位置。官方文档虽然提供了基础指导,但对于一些高级应用来说,查阅源码可能是获取最准确信息的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值