Webpack5 工作流程简析

0. 执行流程
Compiler(webpack(option)返回Compiler实例) → ContextModuleFactory → NormalModuleFactory → Compilation(compiler.run/watch调用compiler.compile生成Compilation实例)→Parse(转译代码)
1. Compiler
compiler 基本上只是执行最低限度的功能,以维持生命周期运行的功能。 它将所有的加载、打包和写入工作, 都委托到注册过的插件上。Compiler对象包含了Webpack环境所有的配置信息,包含options,loaders,plugins这些信息,这个对象在webpack启动时被实例化,全局唯一。包含一些webpack构建主流程的钩子,如environment、entryOption、run、watchRun、compile、compilation、make、emit、done等钩子
2. NormalModuleFactory
寻找模块的绝对路径并,解析并生成module实例供后续构建使用
3. Compilation
3.1 compilation代表着一次新的编译,包含当前的模块资源、编译生成的资源,变化的文件等,每当检测到一个文件变化,就会创建一个新的 compilation
3.2 它会对应用程序的依赖图中所有模块,进行编译,与compiler相比,compilation代表编译的细粒度过程,包含一些加载(load)、封存(seal)、优化(optimize)、 分块(chunk)、哈希(hash)和重新创建(restore)的钩子
4. Parse
生成源代码AST并转换为ES5代码
5. 依赖循环
构建会循环解析依赖 ,直到模块解析完毕:NormalModuleFactory(resolve) → Compilation(build-module,loader)→ Parse(AST,transform)→Compilation(suceed-module)→NormalModuleFactory(resolve)
在这里插入图片描述

模块解析完毕之后,进入剩下的Compilation及Compiler流程

参考链接:
WebPack 插件机制探索

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值