在编写 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): voidgetPromise: <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