1.Webpack的构建流程是什么?
被面试官问到Webpack的构建流程是什么的时候该如何回答呢?
从读取配置到输出文件的过程
- Webpack的运行流程是串行的,从启动到结束经历的流程分别是
- 初始化参数:从配置文件和 shell 语句中读取并合并参数得到最终一个参数。
- 开始编译:用上一步得到的参数的初始化 compiler 这个对象去加载我们配置的插件,执行对象的 run 方法,开始进入编译阶段。
- 确定入口:根据配置中的 entry找出所有的入口文件。
- 编译模块:从入口文件出发,调用所有配置的loader,对模块进行一个编译,再找出该模块所依赖的模块,递归这个步骤,直到所有入口文件都经过了编译模块的处理。(循环递归)
- 完成编译模块:使用loader编译完所有模块之后,得到每个模块被编译的最终内容和他们之间的依赖关系。
- 输出资源:根据入口和模块的依赖关系,组装成一个个包含多个模块的chunk,再把每个chunk转换成单一的文件加载到输出列表(这一步是最后修改内容的机会)
- 输出完成后,根据配置确定输出的路径和文件名,把文件写入到文件系统中。
- 在以上过程中Webpack会在特定的时间点,广播出特定的事件,插件会在监听到一些事件之后,执行特定的逻辑,同时插件可以调用Webpack提供的一些API 来改变Webpack的运行结果。