Skip to content

TTtuntuntutu/minipack

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

minipack源码解释

大逻辑

minipack

它做了两件事情:

  1. 构建dependency graph;
  2. 返回一个浏览器中可执行的bundle(此处bundle为名词);

细节

details

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],是提前精心准备好的,一个是函数体,一个用来定位依赖。

About

📦 A simplified example of a modern module bundler written in JavaScript

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • JavaScript 100.0%