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打包的主要内容,如果未能解决你的问题,请参考以下文章

Webpack打包

webpack-打包优化方案

如何用webpack打包一个网站应用

webpack打包原理

webpack的基础打包

使用 webpack 打包 js