Dies ist die deutsche mfdoctor-Dokumentation. Technische Bezeichner, CLI-Flags, Regel-IDs und Codebeispiele bleiben unverändert, damit die Inhalte zwischen den Sprachen vollständig kompatibel bleiben. Verwenden Sie den Sprachumschalter für die kanonische englische Fassung.
Limitations
MVP supports Vite (including Rolldown-integrated Vite and Vite Plus as a
partial matrix cell, Vite Plus production smoke plus unit lifecycle
hooks; not a full supported claim yet), direct Rspack, Rsbuild, Webpack,
and Modern.js as a partial matrix cell, adapter API plus an
Rspack-under-the-hood smoke (not a full @modern-js/app-tools build in this
lockfile; see compatibility).
Gaps below are tracked as GitHub issues and milestones so each one can be
removed from this page when it ships.
Next.js Module Federation (@module-federation/nextjs-mf /
NextFederationPlugin) is unsupported. No mfdoctor adapter is planned.
Prefer Rsbuild or Modern.js. See compatibility.
Roadmap: v1.0 · post-v1 · epic #30.
v1.0 (governance-ready)
The v1 compatibility matrix for Vite / Rolldown /
Vite Plus / Rspack / Rsbuild / Webpack / Modern.js (partial), Node engines,
package managers, and report surfaces has shipped
(#15,
MFDOCTOR-106).
Dynamic Module Federation import patterns are covered at the documented
completeness bar: supported
literals and runtime/manifest hints when evidence exists, with honest
doctor/partial-analysis for unresolved dynamics, not a claim of 100%
arbitrary runtime JS
(#14,
MFDOCTOR-105).
The mfdoctor plugin analyzes the current app (config + emit). Cross-app
host↔remote shared/integration issues need each app's .mf/doctor/project.json
plus the one-shot workspace gate (mfdoctor workspace /
mfdoctor federation --workspace) or manual mfdoctor federation globs
(#25,
MFDOCTOR-109). Opt-in mfdoctor probe inspects a deployed manifest.
Opt-in browser runtime trace import is available through mfdoctor runtime when
you supply an Observability Plugin export. Default check and federation
analysis stay offline. When runtimeTrace is set on mfdoctor options, check
also merges shared/remote hints from that export into import facts without
fetching URLs or executing remote JavaScript.
mfdoctor does not ship an HTML dashboard or --ui server. Use terminal, JSON, and
SARIF reports. buildUiPayload / schemas/ui.schema.json remain as a
programmatic federation graph contract for custom tooling, see
report schemas and the public API surface.
An HTML analysis UI
(#13) was
closed as not planned.
post-v1
No open post-v1 adapter gaps right now. Rolldown / Vite Plus (#11) and Modern.js
(#12) shipped as partial matrix cells, see
compatibility. A real @modern-js/app-tools CI emit remains
blocked by lockfile trustPolicy: no-downgrade (last provenance-attested stable
is 2.63.3); the upstream core-demo re-soak is #130. Next.js is a permanent
non-goal, not a deferred adapter.
Was mfdoctor abdeckt
MF runtimePlugins declared in bundler MF config are first-class: mfdoctor
reads them from the shared mfOptions object at build time. That is not the
same as analyzing a runtime-only host.
SSR host-init inject (Vite-only)
vite/host-init-inject-ssr is a Vite
dialect check. It reads @module-federation/vite's public
hostInitInjectLocation option and requires entry when SSR signals are
present on a host with remotes. HTML injection never runs on the server, so
federation bootstrap would otherwise be skipped. See
Vite integration.
Rsbuild and Modern.js SSR hosts inject federation bootstrap through different public APIs. They do not have Vite's HTML-vs-entry switch:
mfdoctor skips vite/host-init-inject-ssr on non-Vite bundlers. That skip
is intentional, not doctor/partial-analysis.
Do not invent an Rsbuild or Modern.js finding for a missing
hostInitInjectLocation. A follow-up rule needs a public option plus a fixture.
Dauerhafte Garantien / keine Ziele
mfdoctor does not rely on undocumented private Module Federation plugin fields. That is a stability guarantee and permanent non-goal, not removable follow-up work. See #18.
Adapters and rules use public Module Federation options, emitted
manifests, stats, and recorded capabilities only. They must not
scrape private plugin instance state, undocumented internals, or other
non-public compiler/plugin fields. Missing optional public input yields
doctor/partial-analysis instead of reaching into private MF plugin state.
Adapter authors should use public Module Federation options and emitted build artifacts. Contribution guidance lives in the repository contribution guide.
Hinweise zur Topologie-/Produktions-Governance-Evidenz (MFDOCTOR-123)
These rules are implemented; a few need compiler-observed facts that CLI-only
check cannot invent:
mfdoctor does not scrape private Module Federation plugin fields for these
checks, only public plugin name / constructor.name, public bundler
output.publicPath, and Vite MF publicPath. When those adapters cannot observe a public
publicPath field, they record doctor/partial-analysis instead of a silent skip.
mfdoctor is build/CI-only. Install it as a devDependency. Adapters run after
emit in Node and must not appear in the client bundle
(#32,
MFDOCTOR-115). An in-browser mfdoctor runtime agent is not planned
(#33,
MFDOCTOR-116). mfdoctor stays plugin-primary, with a complementary CLI, and is
never injected as an in-browser agent.
Runtime-only Module Federation apps, @module-federation/runtime /
createInstance / runtime plugins without a Vite, Rspack, Rsbuild,
Webpack, or Modern.js Module Federation build plugin, are out of scope
for first-class support
(#34,
MFDOCTOR-117).
Without a bundler MF plugin there is usually no mfdoctor post-emit hook, no
reliable emit/manifest from that app, and mfdoctor does not parse
createInstance(...) from source. Manifest and probe coverage apply to
producer artifacts that emit mf-manifest.json, not to "we inferred the
whole runtime-only host."
mfdoctor analysis and the terminal findings showcase run only post-emit /
after-build (writeBundle / closeBundle / afterEmit / onAfterBuild /
Modern.js modifyBundlerChain → afterEmit). Adapters never register
transform / load / client-injection hooks
(#54).
Do not ship mfdoctor into the browser to close that gap. Prefer Observability
exports + mfdoctor runtime, or add a bundler MF plugin + mfdoctor adapter. See
Observability latest.json → mfdoctor runtime and
setup.
Next.js Module Federation (@module-federation/nextjs-mf /
NextFederationPlugin) is out of scope. Upstream support is Pages Router
only and is no longer actively maintained. mfdoctor does not ship a Next.js
adapter, and no Next adapter is planned. Prefer Rsbuild or Modern.js
for new Module Federation apps. Do not start a Next.js adapter.
Governance der Shared-Nutzung (keine Ziele)
mfdoctor closes high-value shared config gaps inspired by
@mf-toolkit/shared-inspector (deep-import bypass, local-graph import depth,
federation host gaps / ghost shares, expandable singleton/candidate lists via
policy packs). mfdoctor does not duplicate RS Doctor duplicate-package
treemaps, chunk graphs, or general bundle-size visualization, use RS Doctor or
a bundler analyzer for those questions.