資源(例如圖片、字體、影片等)是 Rspack 的一等公民,這表示你不需要任何 loader 來處理它們。與其他模組類型不同,資源通常獨立存在,因此它們是以模組的粒度產生的。
其他模組類型,例如 JavaScript 模組,通常會被捆綁到一個或多個區塊中,以便最終產生 bundle。在資源模組的情況下,幾乎不可能被捆綁,因此它們通常獨立存在。這是為什麼它被稱為「資源模組」的最直接原因之一。
'asset/inline'
:將資源轉換為 DataURI,使用 Base64 編碼,目前不支援編碼設定。'asset/resource'
:將資源轉換為單獨的檔案並匯出 URL 位址。'asset'
:
'asset/inline'
或 'asset/resource'
,具體取決於設定'asset/inline'
機制,否則使用 'asset/resource'
機制。'asset/source'
:將資源檔案轉換並匯出為原始字串。type: 'asset'
根據條件自動選擇機制預設情況下,如果資源大小小於或等於 8096 個位元組,則應用 'asset/inline'
機制,否則使用 'asset/resource'
策略。
如果你希望修改此行為,可以使用 module.parser.asset.dataUrlCondition
修改全域設定,或使用 Rule.parser. dataUrlCondition
針對特定符合條件的模組單獨設定。
type: 'asset/inline'
取代 url-loader
type: 'asset/resource'
取代 file-loader
type: 'asset/source'
取代 raw-loader
有時候我們希望最佳化特定的圖片,例如壓縮其大小。我們仍然可以使用這些 loaders。
例如,使用 image-minimizer-webpack-plugin 最佳化所有以 .png
結尾的檔案
上述條件使用 type: 'asset/resource'
,這將指示 Rspack 為所有符合條件的檔案完成個別檔案產生,並返回最終的資源 URL 位址。