{"_id":"@dnhyxc-ai/federation-kit","name":"@dnhyxc-ai/federation-kit","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@dnhyxc-ai/federation-kit","version":"0.1.0","type":"module","description":"Generic Module Federation host runtime: registry, load, bridge, style isolation","main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","sideEffects":false,"author":{"name":"dnhyxc","email":"dnhyxc@163.com"},"license":"MIT","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./style-isolation":{"types":"./dist/style-isolation/index.d.ts","import":"./dist/style-isolation/index.js","require":"./dist/style-isolation/index.cjs"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js","require":"./dist/react/index.cjs"}},"peerDependencies":{"@module-federation/enhanced":">=0.0.0","react":">=18.0.0","react-dom":">=18.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-dom":{"optional":true},"@module-federation/enhanced":{"optional":true}},"devDependencies":{"@module-federation/enhanced":"^2.8.0","@types/react":"^19.1.8","@types/react-dom":"^19.1.6","react":"^19.1.0","react-dom":"^19.1.0","tsup":"^8.5.1","tsx":"^4.20.3","typescript":"^5.8.3"},"scripts":{"clean":"rm -rf dist","build":"pnpm clean && tsup","test:watch":"tsx watch src/style-isolation/styleIsolation.smoke.ts"},"_id":"@dnhyxc-ai/federation-kit@0.1.0","_integrity":"sha512-gW+rRVtfWvelNRjN/dt/IOThqQ0nr+65y8gMhWZRv4/yFldGxjdC/xDZkYL+N3ydqThIA0C8QMgJaPZZsmcf5g==","_resolved":"/private/var/folders/vd/281xk1ks13z6h_gszscyxxgr0000gn/T/51c20e8fa2a72818ba1edddbca987ea7/dnhyxc-ai-federation-kit-0.1.0.tgz","_from":"file:dnhyxc-ai-federation-kit-0.1.0.tgz","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-gW+rRVtfWvelNRjN/dt/IOThqQ0nr+65y8gMhWZRv4/yFldGxjdC/xDZkYL+N3ydqThIA0C8QMgJaPZZsmcf5g==","shasum":"4e739fe0046c856395eeadaa5ad735e4774d801c","tarball":"https://registry.npmjs.org/@dnhyxc-ai/federation-kit/-/federation-kit-0.1.0.tgz","fileCount":14,"unpackedSize":442427,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBZ8ygMW8QbMyMq2vMl00H7xXqQMKeoLEAf69IcEPpe+AiAyPMMtJNMlSEmmM0XwOlrvg/2ohGFU7KgP8v1cahCcug=="}]},"_npmUser":{"name":"dnhyxc","email":"2640559435@qq.com"},"directories":{},"maintainers":[{"name":"dnhyxc","email":"2640559435@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/federation-kit_0.1.0_1788881557030_0.5688908499974492"},"_hasShrinkwrap":false}},"time":{"created":"2026-09-08T15:32:36.805Z","0.1.0":"2026-09-08T15:32:37.146Z","modified":"2026-09-08T15:32:37.400Z"},"maintainers":[{"name":"dnhyxc","email":"2640559435@qq.com"}],"description":"Generic Module Federation host runtime: registry, load, bridge, style isolation","author":{"name":"dnhyxc","email":"dnhyxc@163.com"},"license":"MIT","readme":"# @dnhyxc-ai/federation-kit\n\n像 qiankun / micro-app 一样接入 Module Federation Host。\n\n## 任意项目：3 步\n\n```ts\nimport { createFederation } from '@dnhyxc-ai/federation-kit';\nimport { FederationPlugin } from '@dnhyxc-ai/federation-kit/react';\n\n// 1) 创建（registryUrl 即可；其余有默认值）\nconst mf = createFederation({\n  registryUrl: '/remotes/plugins-registry.json',\n});\n\n// 2) 启动（拉 registry、挂路由/侧栏壳）\nawait mf.start();\nmf.setNavigate((to) => router.navigate(to));\nmf.onRoutesChange(() => remountRouter());\n\n// 3) 页面里声明式挂载\n<FederationPlugin name=\"learningNotes\" />\n// 或\nimport { Plugin } from '@dnhyxc-ai/federation-kit/react';\n<Plugin name=\"learningNotes\" slots={{ loading: () => <Spin /> }} />\n```\n\n对比旧写法：不必手写 `createPluginRuntime` 全量 config，也不必每次给 `PluginHostView` 传 `manager` / `iframeBridge`。\n\n## 可选能力\n\n| 选项 | 默认 | 说明 |\n|------|------|------|\n| `registryUrl` | — | 最简：kit 自 fetch + localStorage 缓存 |\n| `enabledStore` | localStorage | 上架开关 |\n| `capabilities` | theme/locale/navigate 内置 | toast/http/modules 按需补 |\n| `asDefault` | `true` | `<Plugin />` 无需 Provider |\n\n进阶仍可用底层 `createPluginRuntime` / `PluginHostView`。\n\n## 本仓\n\n本仓业务代码**统一从** [`@/federation`](../../apps/frontend/src/federation) 导入（`index.ts` 再导出本包常用符号），不要直接依赖 `@dnhyxc-ai/federation-kit`。\n\n```ts\nimport { mf, PluginHostPage, PluginHostSurface, usePluginEnabled } from '@/federation';\nawait mf.start();\n\n<PluginHostPage pluginId=\"learningNotes\" />\n<PluginHostSurface surface=\"ebook.read\" part=\"drawer\" openPluginId={id} onOpenPluginIdChange={setId} />\n```\n\n## 文档\n\n详细实现思路、原理与逐行注释代码见：\n\n**实现指南（implements-guide）**：\n- [`implements-guide/README.md`](./docs/implements-guide/README.md) — 索引\n- [`implements-guide/架构概览.md`](./docs/implements-guide/架构概览.md) — 架构总览（先读）\n- [`implements-guide/API方法参考.md`](./docs/implements-guide/API方法参考.md) — **方法字典**（ensurePlugin / runLoad / resolvePluginBust 等）\n- [`implements-guide/运行时与桥接.md`](./docs/implements-guide/运行时与桥接.md) — 运行时 / MF / Bridge\n- [`implements-guide/样式隔离实现.md`](./docs/implements-guide/样式隔离实现.md) — 样式隔离\n- [`implements-guide/React宿主视图.md`](./docs/implements-guide/React宿主视图.md) — React 挂载\n- [`implements-guide/宿主适配层.md`](./docs/implements-guide/宿主适配层.md) — 本仓 `@/federation` 适配层\n- [`implements-guide/复刻方案.md`](./docs/implements-guide/复刻方案.md) — 跨项目复刻手册\n\n**宿主接入指南（host-guide）**：\n- [`host-guide/README.md`](./docs/host-guide/README.md) — 主项目接入手册\n\n**插件开发指南（plugin-guide）**：\n- [`plugin-guide/README.md`](./docs/plugin-guide/README.md) — 子项目/插件开指南\n\n## Exports\n\n| 入口 | 内容 |\n|------|------|\n| `@dnhyxc-ai/federation-kit` | `createFederation` / `start` 门面 + 底层 runtime |\n| `@dnhyxc-ai/federation-kit/react` | `FederationPlugin` / `Plugin` / `FederationProvider` / hooks |\n| `@dnhyxc-ai/federation-kit/style-isolation` | 样式隔离 |\n","readmeFilename":"README.md","_rev":"1-36d8a09f0ab6321ec78aa280fd72b380"}