它做了两件事情:
- 构建dependency graph;
- 返回一个浏览器中可执行的bundle(此处bundle为名词);
createAsset 函数做4件事情:
-
读文件;
-
文件内容解析为AST状态;
-
Traverse AST,根据import节点收集dependencies信息;
-
返回该文件的节点数据:
return { id, filename, dependencies, code, };
createGraph :
- 构建依赖树,用数组表达的队列做数据结构存储,通过节点的 mapping 属性做关联;
Bundle:
- 在一个IIFE环境内,执行require(0)。因为 entry file还依赖了其他,所以模拟了localRequire,因为babel打出的是CommonJS,所以还模拟了module、module.export。才发现 [fn, mapping],是提前精心准备好的,一个是函数体,一个用来定位依赖。

