output.assetsRetry

TIP

该配置由 Modern.js Builder 提供,更多信息可参考 output.assetsRetry

  • 类型: Object

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;
  onRetry?: (options: AssetsRetryHookContext) => void;
  onSuccess?: (options: AssetsRetryHookContext) => void;
  onFail?: (options: AssetsRetryHookContext) => void;
};

默认值如下:

export const defaultAssetsRetryOptions: AssetsRetryOptions = {
  type: ['script', 'link', 'img'],
  domain: [],
  max: 3,
  test: '',
  crossOrigin: false,
  onRetry: () => {},
  onSuccess: () => {},
  onFail: () => {},
};
  • 打包工具: 仅支持 webpack

assetsRetry.max

  • 类型: number
  • 默认值: 3

单个资源的最大重试次数。比如:

export default {
  output: {
    assetsRetry: {
      max: 3,
    },
  },
};

assetsRetry.domain

  • 类型: string[]
  • 默认值: []

指定资源加载失败时的重试域名,如果为空则使用当前页面的域名。比如:

export default {
  output: {
    assetsRetry: {
      domain: ['https://cdn1.example.com', 'https://cdn2.example.com'],
    },
  },
};

assetsRetry.type

  • 类型: string[]
  • 默认值: ['script', 'link', 'img']

可重试的资源类型。比如:

export default {
  output: {
    assetsRetry: {
      type: ['script', 'link'],
    },
  },
};

assetsRetry.test

  • 类型: string | ((url: string) => boolean) | undefined
  • 默认值: undefined

匹配资源 URL 的正则表达式或函数,默认匹配所有资源。比如:

export default {
  output: {
    assetsRetry: {
      test: /cdn\.example\.com/,
    },
  },
};

assetsRetry.crossOrigin

  • 类型: undefined | boolean
  • 默认值: false

用于向 <script> 资源标签中注入 crossorigin 属性,传入 true 则会启用默认值 anonymous。比如:

export default {
  output: {
    assetsRetry: {
      crossOrigin: true,
    },
  },
};

assetsRetry.onRetry

  • 类型: undefined | (options: AssetsRetryHookContext) => void

资源重试时的回调函数。比如:

export default {
  output: {
    assetsRetry: {
      onRetry: ({ times, domain, url, tagName }) => {
        console.log(
          `Retry ${times} times, domain: ${domain}, url: ${url}, tagName: ${tagName}`,
        );
      },
    },
  },
};

assetsRetry.onSuccess

  • 类型: undefined | (options: AssetsRetryHookContext) => void

资源重试成功时的回调函数。比如:

export default {
  output: {
    assetsRetry: {
      onSuccess: ({ times, domain, url, tagName }) => {
        console.log(
          `Retry ${times} times, domain: ${domain}, url: ${url}, tagName: ${tagName}`,
        );
      },
    },
  },
};

assetsRetry.onFail

  • 类型: undefined | (options: AssetsRetryHookContext) => void

资源重试超过最大重试次数时的回调函数。比如:

export default {
  output: {
    assetsRetry: {
      onFail: ({ times, domain, url, tagName }) => {
        console.log(
          `Retry ${times} times, domain: ${domain}, url: ${url}, tagName: ${tagName}`,
        );
      },
    },
  },
};
,