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

(🐞 反爬虫测试!打击盗版⚠️)如果你看到这个信息, 说明这是一篇剽窃的文章,请访问 https://www.cnblogs.com/xgqfrms/ 查看原创文章!

refs



©xgqfrms 2012-2021

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

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


posted @ 2020-04-22 17:08  xgqfrms  阅读(254)  评论(18编辑  收藏  举报