在編寫 Rspack 外掛時,您可以使用 compiler.getCache(name: string)
或 compilation.getCache(name: string)
來取得快取物件,該物件可以在建置過程中共享資料。快取資料儲存在 Compiler
上,因此可以在監看模式中的多個 Compilation
中使用。
mode="development"
中啟用。以下程式碼找出 processAssets
中新加入的資源
非同步取得快取資料,透過函式或 Promise 回呼。
get
: <T>(identifier: string, etag: Etag | null, callback: (err: Error, result: T) => void): void
getPromise
: <T>(identifier: string, etag: Etag | null): Promise<T>;
getLazyHashedEtag
產生非同步儲存快取資料,透過函式或 Promise 回呼。
store
: <T>(identifier: string, etag: Etag | null, data: T, callback: (err: Error) => void): void;
storePromise
: <T>(identifier: string, etag: Etag | null): Promise<T>;
getLazyHashedEtag
產生嘗試非同步取得快取資料,如果不存在則呼叫計算函式產生,透過函式或 Promise 回呼。
provide
:
providePromise
getLazyHashedEtag
產生透過使用 getLazyHashedEtag
和 mergeEtags
方法,可以建立一個 etag 作為資料項目的唯一識別符。它不會在建立時立即計算,而是會延遲到使用時才計算,並且還可以快取。當複雜的資料物件用作唯一識別符時,可以使用此方法來提高效能。
getLazyHashedEtag
:(obj: HashableObject): Etag
,計算物件的雜湊值以產生 etag 作為資料識別符,物件需要實作 updateHash(hash: Hash)
。mergeEtags
:(a: Etag, b: Etag): Etag
,將兩個 etag 合併為一個。透過使用 getItemCache
方法,可以建立單個資料項目的快取物件。此快取物件提供簡化的資料存取方法,不再需要識別符和 etag 作為引數。
(identifier, etag): ItemCacheFacade
透過使用 getChildCache
方法,可以產生一個子快取物件,其介面完全一致,並且可以在需要分組儲存多個快取時使用。
(name: string): CacheFacade