模組類型
Rolldown 作為一個 Web 捆綁器,不僅可以接受 JavaScript 檔案作為輸入項目,而且還支援其他類型的輸入項目,例如 CSS(未來)、JSON、資料網址等等。
因此,如果輸入項目可以在沒有任何額外外掛程式的情況下被 rolldown 識別,那就表示 rolldown 將此輸入項目的類型視為一級公民。
我們稱這些一級類別為模組類型
。
它如何影響使用者
在大多數情況下,使用者不必在意此概念,因為 rolldown 會自動為使用者處理它。
Rolldown 使用檔案的副檔名來判斷模組類型
是什麼,但有時這還不夠。例如,一個檔案包含 JSON 資料,但副檔名是.data
。在這種情況下,rolldown 無法將其識別為 JSON 檔案,因為副檔名不是.json
。
在這種情況下,使用者需要透過設定rolldown.config.mjs
中的moduleTypes
欄位來告訴 rolldown.data
副檔名的模組類型
是什麼。
export default {
moduleTypes: {
'.data': 'json',
},
}
對於外掛程式
外掛程式作者也可以在許多地方指定檔案的模組類型
,例如load
掛鉤和transform
掛鉤。
模組類型
為外掛程式建立了官方約定俗成,以便獨立的外掛程式可以一致的方式處理特定類型的檔案,而無需在意其他外掛程式的詳細資料。
例如,vite 會為.vue
檔案建立一個虛擬 css 模組,並將?lang=css
附加到虛擬模組的識別碼,這使得 vue 外掛程式會將這些模組識別為 css 模組。但這只是 vue 外掛程式的約定俗成,其他外掛程式可能不會遵循此約定俗成。
現在有了模組類型
,vite 可以指定虛擬 css 模組的模組類型
為css
,而其他外掛程式(例如 postcss 外掛程式)可以在不了解 vue 外掛程式詳細資料的情況下處理這些 css 模組。
模組類型
的另一個特點是,它讓外掛程式可以更輕鬆地支援新的檔案類型。例如,為了新增對.jsonc
檔案的支援,一個外掛程式可以在load
掛鉤中移除.jsonc
檔案的註解,並將模組類型
指定為json
。其餘的部分由 Rolldown 處理。