1.初始化compiler:new Compiler(cnofig), config就是webpack.config.js文件的内容
2.开始编译:调用compiler的run方法开始编译
3.确定入口:根据config的entry找到所有的入口文件
4.编译模块:从入口文件触发,调用所有配置的loader对模块进行编译,并且还要收集模块依赖的模块,不断递归进行编译(这个过程会用到使用AST收集依赖,AST就是抽象语法树,像什么eslint, sass, typescript等等都会用到AST,AST可以用@babel/parser
插件来生成)
5.完成模块编译:在经过第4步使用Loader编译完所有模块后,得到每个模块编译的内容和它们的依赖关系
6.输出资源:根据入口和模块之间的依赖关系,组装成一个个包含多个模块的Chunk,再把每个chunk转换成单独的文件加入到输出列表。(这步是可以修改输出内容的最后机会)。
7.输出完成:在确定好输出内容后,根据配置确定输出的路径和文件名,把文件内容写入到文件系统。