webpack流程

49.Webpack插件原理 - 图1
插件就是在两个阶段之间插进去

imagemin-webpack-plugin

GitHub
/src/index.js

image.png
image.png

思路

49.Webpack插件原理 - 图4

clean-webpack-plugin

GitHub
/src/clean-webpack-plugin.ts
image.png

image.png

image.png

思路

49.Webpack插件原理 - 图8

ProvidePlugin

ProvidePlugin

/lib/ProvidePlugin.js
image.png

image.png

思路

49.Webpack插件原理 - 图11

Loader和Plugin的区别

webpack 中 loader 和 plugin 的区别是什么

  • loader,它是一个转换器,将A文件进行编译成B文件,比如:将A.less转换为A.css,单纯的文件转换过程。
  • plugin是一个扩展器,它丰富了webpack本身,针对是loader结束后,webpack打包的整个过程,它并不直接操作文件,而是基于事件机制工作,会监听webpack打包过程中的某些节点,执行广泛的任务

自制Plugin

Writing a Plugin

  • 对 webpack hooks 的了解
  • 对编译原理的了解
  • 对 chunk、hash、module、dep、factory 等概念的理解