Dica de tipoing

Just like um NPM Pacote, Module Federation artifacts também generate tipos e enjoy hot-reloading de tipos, even though o artifacts são hosted on uma remote CDN.

@module-federation/enhanced has type hinting enabled by default. Isso article will introduce several common usage scenarios and their specific configurations.

Uso Scenarios

Generating Tipos

Quando building with the build plugin provided by @module-federation/enhanced, type files are automatically generated.

Carregamento Tipos

  1. Consumer modifies tsconfig.json e adds paths:
{
  "compilerOptions": {
    "paths": {
      "*": ["./@mf-types/*"]
    }
  }
}
  1. Start o aplicações

Depois starting, o consumer vai automatically buscar o producer's tipo arquivos.

Tip

Você don't precisa worry about o startup order do producer e consumer.

Tipo Hot Reloading

Depois modifying o producer's code, o consumer vai automatically buscar o producer's tipos.

hot-types-reload-static

API de runtime Dica de tipoing

Add ./@mf-types/* para o include field para enjoy Runtime loadRemote tipo hinting e tipo hot reloading:

tsconfig.json
{
  "include": ["./@mf-types/*"]
}

hot-types-reload

Info

Quando o builder é webpack, add **/@mf-types/** para watchOptions.ignored para avoid circular compilation issues caused by tipo updates.

Third-Party Pacote Tipo Extraction

Module Federation automatically extracts third-party pacote tipos para garantir esse exposes arquivo tipos pode ser accessed normally.

third-party

Nested Tipo Re-exporte

Module Federation suporta nested remotes e vai automatically extract o tipos de nested remotes.

nested-remote

Dynamic Dica de tipoing

Module Federation suporta carregamento dynamic tipos e também suporta hot updates.

dynamic-remote-hot-types-reload

Configuração

  • dts: Tipo generation/carregamento
  • dev: Tipo hot reloading

FAQ

Project has circular compilation e cannot ser terminated

Este é likely caused pelo compiler watching changes no tipo pasta ou o dist diretório. Add @mf-types para o ignored arquivos. Por exemplo, com webpack/rspack:

config.watchOptions = {
  ignored: ['**/node_modules/**', '**/@mf-types/**'],
};

No tipo arquivos são generated, como para find o reason?

  1. Add o FEDERATION_DEBUG=true environment variable antes o projeto startup comando.
  2. Set dts.displayErrorInTerminal para true.
  3. Start o projeto e check o console output.
  4. (Opcional) Se there é no erro no console, check o .mf/typesGenerate.log log arquivo.