Parcel 将 资源 树转换为 包(bundles) 树。其他许多打包工具基本上是基于 JavaScript 资源,还顺带其他格式 - 例如 内嵌为 JS 文件的字符串。Parcel 不识别文件类型 - 它将按照你所期望的方式与任何类型的资源一起工作,无需配置。Parcel 的打包过程有三个步骤。
**1. 构建资源树**
***
Parcel 接受单个入口资源作为输入,可以是任何类型:JS文件,HTML,CSS,图像等。在Parcel 中定义了各种资源类型,它们知道如何处理特定的文件类型。 资源被解析,他们的依赖关系被提取,并被转换成最终的编译形式。 这个过程创建了一个资源树。
**2. 构建打包树**
***
一旦资源树构建完成,资源就被放入打包文件树中。 为入口资源创建一个包,并且为动态的 import() 创建子包,这会导致代码拆分的发生。
当导入不同类型的资源时,兄弟文件包会被创建,例如,如果你从 JavaScript 导入 CSS 文件,它将被放入兄弟文件包到相应的 JavaScript 中。
如果一个资源需要被打包到多个文件中,它会被提升到文件束树中最近的公共祖先中,这样该资源就不会被多次打包。
**3. 打包**
***
打包文件树被构建之后,每个包都由特定于该文件类型的 packager 写入文件。打包器知道如何将每个资源的代码合并到可以让浏览器加载的最终文件中。