@fulgurjs/federation

中文文档
6.16.22发布于 2026/11/14MITTypeScriptESM + CJS构建来源已验证近 30 天下载 1.3万

Vite Module Federation for Vue and React: remote modules, shared dependencies and app bridges.

原始使用文档
文档目录7 节
  1. 快速开始
  2. 导入入口
  3. 能力地图
  4. 文档
  5. 示例
  6. 贡献与安全
  7. License

@fulgurjs/federation

让一个 Vite 应用使用另一个应用提供的组件、页面、函数或完整子应用。

例如:主系统加载独立部署的审批页面,Vue 页面中嵌入 React 子应用,多个应用共享同一套依赖版本。提供方与使用方可以分仓库开发、独立构建部署。支持 Vue 3 与 React 18/19,Vite 5.1–8。

English | 完整文档中心(中文 docs/zh · English docs/en)

第一次接入完整应用,从一条完整接入流程开始;保留原启动、复用初始化与预检参考已有应用接入。

已有组件直接 expose 原文件;完整应用保留原业务入口并复用初始化,不默认搬 main、重复注册 UI 库或新建 Provider 包装。

已有工程可先用 fulgurjs init --plan 预览接线,审查后再用 --write;复杂业务装配会明确列出人工待办。统一 /vue、/react 入口支持按使用裁剪,不需要改用内部路径。

快速开始

新建工程(推荐):用 CLI 从完整模板创建可独立运行的联邦工程:

npx @fulgurjs/federation create vue-vue --dir my-federation
cd my-federation
pnpm dev

已有工程接入:安装后在 vite.config.ts 注册插件,应用代码按框架从统一入口导入:

npm add @fulgurjs/federation
// vite.config.ts —— 构建配置用包根
import federation from '@fulgurjs/federation'

export default {
  plugins: [
    // Keep the existing framework plugins.
    federation({
      name: 'host',
      remotes: { 'remote-a': { dev: 'http://localhost:5174', prod: '/remote-a' } },
      shared: { vue: { singleton: true } },
    }),
  ],
}
// Vue 应用代码统一入口 @fulgurjs/federation/vue
import { loadRemote, remoteComponent } from '@fulgurjs/federation/vue'
const RemoteButton = remoteComponent('remote-a/Button')
const math = await loadRemote('remote-a/math')
// React 应用代码统一入口 @fulgurjs/federation/react
import { remoteComponent, useLoadRemote, RemoteErrorBoundary } from '@fulgurjs/federation/react'
// 框架无关的浏览器模块 @fulgurjs/federation/runtime(零 Vue/React 依赖)
import { loadRemote, loadShare } from '@fulgurjs/federation/runtime'

上面配置是已有 Vue 消费方的接线示意,保留原 Vite/Vue 插件和业务配置;remote-a 必须真实暴露 ./Button、./math,并在开发地址启动或生产路径部署。地址按实际 base 替换。React 消费方使用自己的框架 shared 配置与 /react API;跨框架 UI 使用完整应用桥接,不把另一框架组件直接交给 remoteComponent。需要整套可运行工程时直接使用上方 create。

导入入口

使用位置入口
Vite 配置、FederationOptions 类型@fulgurjs/federation
Vue 应用代码(组件/页面/桥接/路由同步)@fulgurjs/federation/vue
React 应用代码(组件/页面/桥接/路由同步)@fulgurjs/federation/react
框架无关浏览器模块@fulgurjs/federation/runtime

记忆口诀:应用跑什么框架,就从哪个框架入口导入;两者都要用的纯 TS 模块从 /runtime;Vite 配置从包根。

能力地图

  • 组件与模块:remoteComponent(Vue/React)、useLoadRemote、RemoteErrorBoundary、loadRemote —— 失败显式错误态可重试,不静默兜底。
  • 逐页接入:definePages + createHostPages(宿主页面路由表 → 远程页面),CLI check-pages 启动期契约核对。
  • 完整子应用桥接:defineApplication(独立/嵌入共用装配;自定义契约可用 defineBridgeApp)+ createVueBridgeApp / createReactBridgeApp(宿主);挂载/卸载、会话代次、卸载失败封锁。
  • URL 同步:createVueBridgeNavigation / createReactBridgeNavigation(宿主)+ Vue 工厂返回 { app, router } / createReactBridgeRouter(子应用);深链刷新、守卫取消、query/hash 保留。
  • 共享依赖:singleton / requiredVersion / strictVersion / shareScope / eager,同步与异步裁决,React 18/19 多版本隔离。
  • 远程类型:提供方随构建产出可分发声明(SFC 真实 props/泛型/重载),宿主 dev 自动同步——普通 import 与 loadRemote/remoteComponent/桥接工厂共用一套类型,拼错入口编译期报错;CLI types 供 CI 在 typecheck 前同步校验。 开发期默认只在公开合同边界内生成,不能安全提取或超预算时明确停止,不自动完整扫描;dts.devCheck: "implementation" 可启用完整静态实现检查;生产构建和 CLI 始终检查真实源码,类型就绪不代表业务实现检查通过。
  • CLI:create / init / explain / types / check-pages / doctor / port。

文档

需求入口
系统架构 / 执行顺序系统架构图
新建工程 / 已有项目接入快速开始
Vue/React 组件与普通模块组件与模块
完整子应用 / 跨框架嵌套子应用桥接
路由同步 / 刷新深链URL 同步
全部配置项与默认值配置参考
全部 API 签名与语义API 参考
CLI 命令与退出码CLI 参考
错误码(现象/原因/修法)错误码总表
按症状排错 / 兼容范围排错
模板与示例运行示例总览

示例

五个完整模板(vue-vue / react-react / vue-host-react-remote / react-host-vue-remote / showcase)与功能 Demo 统一维护在 examples/,均可整目录复制后独立安装运行。

贡献与安全

License

MIT

版本与发布记录

@fulgurjs/federation 共发布 191 个版本,首次发布于 2026/09/19;过去 12 个月发布了 191 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
6.16.22latest2026/11/141 天前
6.16.212026/11/142 天前
6.16.202026/11/132 天前
6.16.192026/11/133 天前
6.16.182026/11/087 天前
6.16.172026/11/087 天前

其他发布通道:prerelease → 0.9.1-test.1。

关于 @fulgurjs/federation 的常见问题

@fulgurjs/federation 是什么?

Vite Module Federation for Vue and React: remote modules, shared dependencies and app bridges.

如何安装 @fulgurjs/federation?

在项目目录运行 npm install @fulgurjs/federation,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:vite(>=5.1.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。它还提供命令行工具 fulgurjs,可以用 npx fulgurjs 直接运行。

@fulgurjs/federation 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@fulgurjs/federation 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@fulgurjs/federation 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@fulgurjs/federation 可以商用吗?

@fulgurjs/federation 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@fulgurjs/federation 的下载量有多少?

根据 npm 官方下载统计,@fulgurjs/federation 在 2026/10/16 – 2026/11/14 这 30 天内被下载 12,708 次,日均约 424 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@fulgurjs/federation 还在维护吗?

最新版本 6.16.22 发布于 2026/11/14(1 天前);至今共发布 191 个版本,其中过去 12 个月发布了 191 个;首次发布于 2026/09/19。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。