webpack原理本质是一个模块打包器。通过入口文件分析依赖,生成依赖关系图谱,按照这个关系图去把程序打包成一个或多个bundle;
最终生成的bundle文件时一个自执行函数,内部实现了一个模块加载函数:require函数,按照模块的依赖关系,递归调用require,依次将依赖到的模块加载执行;
在这个打包的基础上,webpack还给外部提供了一个事件流;可以开发自定义的plugin去影响webpack的输出的内容
pulgin是一个class类,插件实例要包含apply方法,webpack生成compiler对象会作为参数传入,可以通过compiler.plugin() 监听webpack广播的事件,挂载自定义回调,
loader是对源文件进行编译的,比如css loader ;vue loader;
编译器 词法分析,语法分析, AST,生成新的代码