dts

  • 类型:boolean | PluginDtsOptions
  • 是否必填:否
  • 默认值:true
  • 使用场景:用于控制 Module Federation 生成/消费类型行为

配置之后,生产者会在构建时自动生成一个压缩的类型文件 @mf-types.zip(默认名称),消费者会自动拉取 remotes 的类型文件并解压至 @mf-types(默认名称)。

PluginDtsOptions 类型如下:

interface PluginDtsOptions {
  generateTypes?: boolean | DtsRemoteOptions;
  consumeTypes?: boolean | DtsHostOptions;
  tsConfigPath?: string;
}

generateTypes

  • 类型:boolean | DtsRemoteOptions
  • 是否必填:否
  • 默认值:true
  • 使用场景:用于控制 Module Federation 生成类型行为

DtsRemoteOptions 类型如下:

interface DtsRemoteOptions {
  tsConfigPath?: string;
  typesFolder?: string;
  deleteTypesFolder?: boolean;
  additionalFilesToCompile?: string[];
  compilerInstance?: 'tsc' | 'vue-tsc';
  compileInChildProcess?: boolean;
  generateAPITypes?: boolean;
  extractThirdParty?: boolean;
  extractRemoteTypes?: boolean;
  abortOnError?: boolean;
}

当配置 generateTypestrue 时,默认会生成下列配置:

{
  "generateAPITypes": true,
  "abortOnError": false,
  "extractThirdParty": true,
  "extractRemoteTypes": true,
  "compileInChildProcess": true
}

extractRemoteTypes

  • 类型:boolean
  • 是否必填:否
  • 默认值:undefined
  • 使用场景:当生产者 exposes 的内容中有重导出自身的 remotes 模块,那么 extractRemoteTypes: true 能够确保消费者能正常获取生产者 exposes 的模块类型
  • 示例:嵌套类型重导出

是否抽取 remotes 的类型。

extractThirdParty

  • 类型:boolean
  • 是否必填:否
  • 默认值:undefined
  • 使用场景:当生产者 exposes 的内容中有包含 antd 的模块,并且消费者没装 antd ,那么 extractThirdParty: true 能够确保消费者能正常获取生产者 exposes 的模块类型
  • 示例:第三方包类型抽取

是否抽取第三方包类型。

generateAPITypes

是否生成 Federation RuntimeloadRemote 类型

compileInChildProcess

  • 类型:boolean
  • 是否必填:否
  • 默认值:undefined

是否在子进程中编译生成类型

abortOnError

  • 类型:boolean
  • 是否必填:否
  • 默认值:false

是否抛出错误当类型生成过程中碰到问题

tsConfigPath

  • 类型:string
  • 是否必填:否
  • 默认值:path.join(process.cwd(),'./tsconfig.json')

优先级:dts.generateTypes.tsConfigPath > dts.tsConfigPath

tsconfig 配置文件路径

typesFolder

  • 类型:string
  • 是否必填:否
  • 默认值:'@mf-types'

生成的压缩类型文件名称,例如设置了typesFolder为 custom,那么生成的压缩类型文件名称为: custom.zip

deleteTypesFolder

  • 类型:boolean
  • 是否必填:否
  • 默认值:true

是否删除生成的类型文件夹

compilerInstance

  • 类型:'tsc' | 'vue-tsc'
  • 是否必填:否
  • 默认值:'tsc'

编译类型的示例

consumeTypes

  • 类型:boolean | DtsHostOptions
  • 是否必填:否
  • 默认值:true
  • 使用场景:用于控制 Module Federation 消费(加载)类型行为

DtsHostOptions 类型如下:

interface DtsHostOptions {
  typesFolder?: string;
  abortOnError?: boolean;
  remoteTypesFolder?: string;
  deleteTypesFolder?: boolean;
  maxRetries?: number;
  consumeAPITypes?: boolean;
}

当配置 consumeTypestrue 时,默认会生成下列配置:

{
  "abortOnError": false,
  "consumeAPITypes": true
}

consumeAPITypes

是否生成运行时 loadRemote API 的类型

maxRetries

  • 类型:number
  • 是否必填:否
  • 默认值:3

最大加载失败重试次数

abortOnError

  • 类型:boolean
  • 是否必填:否
  • 默认值:false

是否抛出错误当类型加载过程中碰到问题

typesFolder

  • 类型:string
  • 是否必填:否
  • 默认值:'@mf-types'

加载成功后的的类型存放目录

deleteTypesFolder

  • 类型:boolean
  • 是否必填:否
  • 默认值:true

加载类型文件之前,是否删除之前加载的 typesFolder 目录

remoteTypesFolder

  • 类型:string
  • 是否必填:否
  • 默认值:'@mf-types'

对应 remotes 目录配置的 typesFolder

tsConfigPath

  • 类型:string
  • 是否必填:否
  • 默认值:path.join(process.cwd(),'./tsconfig.json')

tsconfig 配置文件路径