Metro是一个JavaScript打包器,给它一些options和入口文件,将返回一个包含入口文件及其所有依赖的js bundle文件
Metro在打包过程中有如下三个阶段:
- 解析
- 转换
- 序列化
解析
Metro通过resovler
把文件之间的互相引用转化成一个个单独的模块,最后得到一个包含所有模块的图表。实际上这个阶段和转换阶段是在同时进行
转换
所有的模块都将通过装换器转化成目标平台(比如:React Native)可以识别的模块,另外模块的转换将基于maxWorkers
指定的数量并行进行
序列化
一旦所有的模块被转换完成,它们将把跟入口文件相关的模块组合起来生成一个或者多个js文件,该文件就是我们最终想要的包
Modules
Metro已经被拆分成三个模块,分别对应上面的解析阶段、转换阶段、序列化阶段。这三个模块可以根据你的需要换成其他类似的模块,比如可以用Babel来代替默认的转换模块