在编写 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