output.assetsRetry
output.assetsRetry
用于配置资源加载失败时的重试逻辑。配置类型如下:
export type AssetsRetryHookContext = {
times: number;
domain: string;
url: string;
tagName: string;
};
export type AssetsRetryOptions = {
type?: string[];
domain?: string[];
max?: number;
test?: string | ((url: string) => boolean);
crossOrigin?: boolean | 'anonymous' | 'use-credentials';
inlineScript?: boolean;
onRetry?: (options: AssetsRetryHookContext) => void;
onSuccess?: (options: AssetsRetryHookContext) => void;
onFail?: (options: AssetsRetryHookContext) => void;
};
由于该能力会往 HTML 中注入额外的一些运行时代码,因此我们默认关闭了该能力,如果需要开启该能力,你可以添加以下配置:
export default {
output: {
assetsRetry: {},
},
};
当你开启该能力后,assetsRetry
的默认配置如下:
export const defaultAssetsRetryOptions: AssetsRetryOptions = {
type: ['script', 'link', 'img'],
domain: [],
max: 3,
test: '',
crossOrigin: false,
onRetry: () => {},
onSuccess: () => {},
onFail: () => {},
};
示例
你可以通过 assetsRetry
配置项,来定制你的重试逻辑。
如,通过 assetsRetry.domain
指定资源加载失败时的重试域名列表:
export default {
output: {
assetsRetry: {
domain: ['https://cdn1.com', 'https://cdn2.com', 'https://cdn3.com'],
},
},
};
添加以上配置后,当 cdn1.com
域名的资源加载失败时,请求域名会自动降级到 cdn2.com
。
如果 cdn2.com
的资源也请求失败,则会继续请求 cdn3.com
。
assetsRetry
是基于 Rsbuild 的 Assets Retry 插件实现的,并提供相同的配置项。你可以参考 Rsbuild - Assets Retry 插件 来了解所有可用的配置项。