王争的算法训练营(第5期)
5.webpack文件的解析与构建
文件的解析与构建是一个比较复杂的过程,在webpack源码中主要依赖compiler和compilation两个核心对象实现
compiler是一个全局单例,他负责把控整个webpack打包的构建过程,compilation对象是每一次构建的上下文对象,它包含了当次构建所需要的所有信息,每次热更新和重新构建,compiler都会重新生成一个新的compilation对象,负责此次更新的构建过程
而每个模块间的依赖关系,则依赖于AST语法树。每个模块文件在通过Loader解析完成之后,会通过acorn库生成模块代码的AST语法树,通过语法树就可以分析这个模块是否还有依赖的模块,进而继续循环执行下一个模块的编译解析。
最终Webpack打包出来的bundle文件是一个IIFE的执行函数。