webpack loader & pulgin All In One
webpack loader & pulgin All In One
- loader
https://webpack.js.org/concepts/loaders/
- 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, 禁止转载 🈲️,侵权必究⚠️!
本文首发于博客园,作者:xgqfrms,原文链接:https://www.cnblogs.com/xgqfrms/p/12753348.html
未经授权禁止转载,违者必究!