xgqfrms™, xgqfrms® : xgqfrms's offical website of cnblogs! xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!

webpack loader & pulgin All In One

webpack loader & pulgin All In One

  1. loader

https://webpack.js.org/concepts/loaders/

  1. plugin

https://webpack.js.org/concepts/plugins/

const pluginName = 'ConsoleLogOnBuildWebpackPlugin';

class ConsoleLogOnBuildWebpackPlugin {
  apply(compiler) {
    compiler.hooks.run.tap(pluginName, compilation => {
      console.log('The webpack build process is starting!!!');
    });
  }
}

module.exports = ConsoleLogOnBuildWebpackPlugin;

webpack

一、webpack 的打包原理

识别入口文件
通过逐层识别模块依赖(Commonjs、amd 或者 es6 的 import,webpack 都会对其进行分析,来获取代码的依赖)
webpack 做的就是分析代码转换代码编译代码输出代码
最终形成打包后的代码

二、什么是 loader

loader 是文件加载器,能够加载资源文件,并对这些文件进行一些处理,诸如编译、压缩等,最终一起打包到指定的文件中

处理一个文件可以使用多个 loader,多个 loader 的执行顺序和配置中的顺序相反的,即最后一个loader 最先执行,第一个loader最后执行, 从后向前执行/从右向左执行

第一个执行的 loader 接收源文件内容作为参数,其它 loader 接收前一个 loader 执行后的返回值作为参数,最后一个执行的 loader会返回此模块的 JavaScript 源码

三、什么是 plugin

在 webpack 运行的生命周期中会广播出许多事件,plugin 可以监听这些事件,在合适的时机通过 webpack 提供的API 改变输出结果

四、loader 和 plugin 的区别

loader 是一个转换器,将 A文件进行编译形成 B文件,这里操作的是文件,比如将 A.scss 转换为 A.css,单纯的文件转换过程

plugin 是一个扩展器,它丰富了 webpack 本身,针对是 loader 结束后,webpack 打包的整个过程,它并不直接操作文件,而是基于事件机制工作,会监听 webpack 打包过程中的某些节点,执行更广泛的任务

https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/308#issuecomment-583222450

refs



©xgqfrms 2012-2021

www.cnblogs.com/xgqfrms 发布文章使用:只允许注册用户才可以访问!

原创文章,版权所有©️xgqfrms, 禁止转载 🈲️,侵权必究⚠️!


posted @   xgqfrms  阅读(260)  评论(18编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2019-04-22 hashChange & url change & QRCode & canvas to image
2019-04-22 Web APP & 弹窗插件
2018-04-22 Nginx & Reverse Proxy All In One
点击右上角即可分享
微信分享提示