webpack打包
Posted 炎泽
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webpack打包相关的知识,希望对你有一定的参考价值。
webpack创建compiler实例,如果options是数组,则创建多个compiler;
初始化compiler,为compiler添加上下文context和options,初始化基本插件;
compiler调用run,run内调用compile方法,开始编译;
compile内创建compilation对象,并将this传入,compilation就包含了对compiler的引用;
compiler调用addEntry,addEntry调用_addModuleChain();
_addModuleChain查询合适的工厂函数开始创建模板,并将其加入module链当中,调用buildModule();
buildModule是核心,包括module.js内调用的build(),build调用doBuild来查找合适的loader,并在回调函数内解析源文件,生成AST,来记录源码间的依赖行为
buildModule创建模板,根据depedencies创建依赖数组(期间调用addModuleDepedencies);
module创建完毕;
compiler调用seal,添加hash,调用addModule、addChunk(将module装入chunk)对chunk和module开始封装;
compilation调用createChunkAsset,开始生成最终代码;
createChunkAsset内根据不同的module,调用MainModule.render,chunkTemplate.render进行进一步处理
MainModule.render,chunkTemplate.render内调用moduleTemplate.render
moduleTemplate.render调用module.source
module.source将生成好的代码放入assets中
Compiler.emitAssets将compilation的assets输出到目录中
以上是关于webpack打包的主要内容,如果未能解决你的问题,请参考以下文章