metro 是一个针对 react Native的JavaScript模块打包器,他接收一个entry file (入口文件) 和一些配置作为参数,返回给你一个单独的JavaScript文件,这个文件包含了你写的所有的JavaScript 代码和所有的依赖。 也就是说Metro把你写的几十上百个js文件和几百个node_modules的依赖,打包成了一个文件。
Metro 的打包过程有3个独立的阶段:Resolution、Transformation、Serialization
Resolution 阶段
Metro 需要建立一个你的入口文件所需要的所有的模块的表,为了找到一个文件依赖了哪些文件,Metro 使用了一个resolver。在实际中,Resolution阶段是和transformation阶段并行进行的。
Transformation阶段
所有的模块都要经历一个 transformer, transformer 负责把一个模块转换成RN能理解的格式;
Serialization阶段
一旦模块被转换完成,就会马上被serialized,通过serializer,把上一个阶段转换好的模块组合成一个或多个bundle,bundle 就是字面意思:把一堆模块组合成一个单独的JavaScript文件
Metro这个库已经根据bundle时的各个阶段,拆分为resolver,transformer,serializer 模块了,每个模块负责相应的功能,因此你可以方便的替换为自己的模块。
链接: https://fly63.com/nav/3820