用途:检查 Module Federation 的构建配置,覆盖 MF 插件选择、异步入口配置、exposes 键格式和 exposes 路径四类问题,并对每项结果给出警告与处理建议。
主要能力与判定: 1)CONFIG-PLUGIN(警告):检测 bundler 与已安装 MF 相关包,推荐插件。Webpack 用 @module-federation/enhanced 或 @module-federation/enhanced/webpack;Rspack 用 @module-federation/enhanced/rspack(推荐)或 @module-federation/rspack;Rsbuild 用 @module-federation/rsbuild-plugin(推荐)或 Rspack 插件;Modern.js 在 @modern-js/app-tools ≥ 3.0.0 用 @module-federation/modern-js-v3,否则用 @module-federation/modern-js,并回退到 Rspack/Webpack 插件;Next.js 用 @module-federation/nextjs-mf。 2)CONFIG-ASYNC-ENTRY(警告,对应 RUNTIME-006):bundler 配置未设置 experiments.asyncStartup = true,多数 bundler 需要该项以避免运行时初始化错误;使用 @module-federation/modern-js-v3 或 @module-federation/modern-js 时可不需要;Rspack 需版本 > 1.7.4 才支持。检查方式为读取 MFContext 的 bundler.configFile 并查找 experiments.asyncStartup。 3)CONFIG-EXPOSES-KEY(警告):exposes 键必须以 ./ 开头,如 "./Button" 而非 "Button",会告知具体键名并引导修正格式。 4)CONFIG-EXPOSES-PATH(警告):exposes 值引用的文件不存在,需精确匹配扩展名(如 .tsx ≠ .ts)。常见原因包括路径拼写错误、扩展名错误、相对路径基准错误(应相对于项目根目录)。
使用方式:先调用 mf-context 技能并传入 $ARGUMENTS 收集 MFContext;再将其序列化为 JSON,通过 --context 参数传给检查脚本:node scripts/config-exposes-check.js --context '<MFContext-JSON>'。随后逐项处理输出 results 数组中的结果。
结果为空时:告知用户插件选择、异步入口配置与 exposes 均通过检查。
限制:资料未提供脚本安装方式、错误级别之外的更细判定、修复自动化能力及支持版本范围等信息。