跳到內文

模組類型

Rolldown 作為一個 Web 捆綁器,不僅可以接受 JavaScript 檔案作為輸入項目,而且還支援其他類型的輸入項目,例如 CSS(未來)、JSON、資料網址等等。

因此,如果輸入項目可以在沒有任何額外外掛程式的情況下被 rolldown 識別,那就表示 rolldown 將此輸入項目的類型視為一級公民。

我們稱這些一級類別為模組類型

它如何影響使用者

在大多數情況下,使用者不必在意此概念,因為 rolldown 會自動為使用者處理它。

Rolldown 使用檔案的副檔名來判斷模組類型是什麼,但有時這還不夠。例如,一個檔案包含 JSON 資料,但副檔名是.data。在這種情況下,rolldown 無法將其識別為 JSON 檔案,因為副檔名不是.json

在這種情況下,使用者需要透過設定rolldown.config.mjs中的moduleTypes欄位來告訴 rolldown.data副檔名的模組類型是什麼。

rolldown.config.mjs
js
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 處理。

在 MIT 授權條款下釋出。