Parcel 將 資源 樹轉換為 包(bundles) 樹。其他許多打包工具基本上是基于 JavaScript 資源,還順帶其他格式 - 例如 內嵌為 JS 文件的字符串。Parcel 不識別文件類型 - 它將按照你所期望的方式與任何類型的資源一起工作,無需配置。Parcel 的打包過程有三個步驟。
**1. 構建資源樹**
***
Parcel 接受單個入口資源作為輸入,可以是任何類型:JS文件,HTML,CSS,圖像等。在Parcel 中定義了各種資源類型,它們知道如何處理特定的文件類型。 資源被解析,他們的依賴關系被提取,并被轉換成最終的編譯形式。 這個過程創建了一個資源樹。
**2. 構建打包樹**
***
一旦資源樹構建完成,資源就被放入打包文件樹中。 為入口資源創建一個包,并且為動態的 import() 創建子包,這會導致代碼拆分的發生。
當導入不同類型的資源時,兄弟文件包會被創建,例如,如果你從 JavaScript 導入 CSS 文件,它將被放入兄弟文件包到相應的 JavaScript 中。
如果一個資源需要被打包到多個文件中,它會被提升到文件束樹中最近的公共祖先中,這樣該資源就不會被多次打包。
**3. 打包**
***
打包文件樹被構建之后,每個包都由特定于該文件類型的 packager 寫入文件。打包器知道如何將每個資源的代碼合并到可以讓瀏覽器加載的最終文件中。