@equinor/fusion-framework

中文文档
9.1.0发布于 2026/11/12ISCTypeScriptES Module近 30 天下载 1万
中文使用文档
文档目录13 节
  1. 这是什么包裹?
  2. 快开始
  3. 关键概念
  4. API 表面
  5. 共同模式
  6. 配置一个名为 HTTP 的客户端
  7. 可选认证
  8. 用自定义模块扩展
  9. 诊断 HTTP 传输失败
  10. 内建模块
  11. 测试
  12. 文档
  13. 进一步阅读

@ equinor/ 聚变框架

Bootstrap并配置核心Fusion框架模块图——认证,HTTP,服务发现,上下文,遥测等——在一个单一初始化调用中.

这是什么包裹?

@equinor/fusion-framework 是启动“融合框架”实例的顶级切入点。 它将内置模块集(MSAL auth,HTTP客户端工厂,服务发现,服务,上下文,事件总线,和遥测)捆绑在单个模块后 FrameworkConfigurator 编号 : init API使得消费者不必将每个模块单独接通.

当 您正在构建一个门户 shell, 一个独立的应用程序主机, 或任何需要 Fusion 模块堆栈的运行时间 。 运行的微前端应用程序 内部 一个已初始化的门户网站通常使用 @equinor/fusion-framework-react-app 换句话说.

快开始

import { FrameworkConfigurator, init } from '@equinor/fusion-framework';

// 1. Create a configurator
const configurator = new FrameworkConfigurator();

// 2. Set up authentication (MSAL)
configurator.configureMsal({
  clientId: '<your-client-id>',
  authority: 'https://login.microsoftonline.com/<your-tenant-id>',
});

// 3. Point service discovery at your registry
configurator.configureServiceDiscovery({
  client: { baseUri: 'https://service-registry.example.com' },
});

// 4. Bootstrap — resolves all modules and assigns window.Fusion
const fusion = await init(configurator);
console.log(fusion.modules); // fully initialized module instances

关键概念

概念说明
框架配置器初始化前收集每个模块的配置 。 提供键入的帮助, 如 configureMsal, (中文(简体) ), configureHttp, (中文(简体) ), configureHttpClient,以及 configureServiceDiscovery。 。 。 .
输入需要一个 FrameworkConfigurator,初始化所有模块,集 window.Fusion,并发送 onFrameworkLoaded 活动.
组合摩多类型别名描述每个内置模块描述符(文字,事件,HTTP,MSAL,服务,服务-发现,遥测)外加任何额外的自定义模块.
组合根运行时对象返回 init包含 modules 与所有活模块实例相映射.

API 表面

导出仁爱目的
FrameworkConfigurator类初始化前配置模块
FusionConfigurator别名折旧 ——使用 FrameworkConfigurator
init 编号 : default函数从配置器启动框架
FusionModules类型内建 + 自定义模块描述联盟
FusionModulesInstance类型初始化后已解析实例映射
Fusion接口已曝光的根对象 window.Fusion
FusionRenderFn类型将应用程序安装到 DOM 元素的召回签名

共同模式

配置一个名为 HTTP 的客户端

configurator.configureHttpClient('my-api', {
  baseUri: 'https://api.example.com',
  defaultHeaders: { 'X-Custom': 'value' },
});

可选认证

// Pass `false` as second argument to make auth optional
configurator.configureMsal(msalConfig, false);

用自定义模块扩展

import { FrameworkConfigurator, init } from '@equinor/fusion-framework';
import myCustomModule from './my-custom-module';

const configurator = new FrameworkConfigurator<[typeof myCustomModule]>();
configurator.addConfig({ module: myCustomModule, configure: (b) => { /* … */ } });
const fusion = await init(configurator);

诊断 HTTP 传输失败

FrameworkConfigurator 使用 createHttpTelemetry 从 @equinor/fusion-framework-module-telemetry/integrations。 。 。 . 每次实际抓取尝试都会产生一个 fusion.http.request.duration 参数为 success, (中文(简体) ), failure (拒绝取回或非-2xx回复)或 cancelled (吸收信号) 结果,失败的尝试会增加一个消毒 fusion.http.request.failure. URLs, (中文(简体) ), 信头、尸体、信使和原出的错误从未被记录.

中间软件在每次配置回调后被附加, 所以重试中间软件 登记簿将它包起来,每次重试都是自己的尝试。 时间到 fetch 决定, 当一个流出的身体完成。 托肯收购由认证人单独报告 模块,并用自己的记录发现服务。 遥测在之后连接 初始化,所以模块初始化时提出的要求不记录. 输出者 以 markTelemetryExportRequest 并配置客户端 拥有自己的 middlewareHandler 未设置工具。 不创建出口国 .

// Opt out of framework HTTP diagnostics; other operational telemetry is unchanged.
const configurator = new FrameworkConfigurator({ httpTelemetry: false });

App 模块配置了自己的 HTTP 模块, 而此设置不是仪器 .

内建模块

默认启用了下列模块的框架船:

  • @equinor/fusion-framework-module-event ——跨模块活动总线
  • @equinor/fusion-framework-module-msal - MSAL/Azure AD认证
  • @equinor/fusion-framework-module-http ——HTTP客户工厂和被命名客户
  • @equinor/fusion-framework-module-service-discovery ——运行时间服务终点解析
  • @equinor/fusion-framework-module-services ——打字服务客户端
  • @equinor/fusion-framework-module-context - 应用程序/项目背景选择
  • @equinor/fusion-framework-module-telemetry • 遥测、记录和元数据

测试

从 @equinor/fusion-framework/mock 在没有证书、没有网络接入和没有配置的测试中初始化框架.

import { createMockToken, mockFramework } from '@equinor/fusion-framework/mock';

const fusion = await mockFramework((configurator) => {
  configurator.msal.setAcquireToken(({ clientId, scopes }) =>
    createMockToken({
      aud: clientId,
      scp: scopes.join(' '),
      name: 'Ada Lovelace',
      preferred_username: '[email protected]',
      oid: 'ada-lovelace',
    }),
  );
  configurator.serviceDiscovery.setBaseUri('http://localhost:6669');
});

const token = await fusion.modules.auth.acquireAccessToken();
const apps = await fusion.modules.serviceDiscovery.resolveService('apps');

这个 真实 配置 + 初始化管道运行 真实 内置模块;只有离开进程的边框——MSAL客户端和服务发现客户端被替换. 因此,模块接线、配置验证和生命周期钩在生产中表现得和它们一样,因此测试仍然捕获接线错误.

切入点有 没有测试运行者的依赖性而且船上没有嘲弄API本身——监视个别电话是你们试跑者的工作.

文档

指南封面
选择测试层用于 React app、 框架、 模块、 HTTP 和跑道级测试的导入
测试选择用户、签名测试、编制服务注册、监视和配置为应用程序
测试-设计何以取而代之,何以取而代之,何而取而取之;何而取而取而取而取而取而取之;何而取而取而取而取而取而取而取而取而取而取而取之;何而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取之而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取而取
测试-为另一个模块添加一个模拟器向自己的模块提供测试双倍,哪些框架模块尚未覆盖
测试 - API每个模拟导出和拥有的软件包

进一步阅读

📚 完整文档

版本与发布记录

@equinor/fusion-framework 共发布 339 个版本,首次发布于 2021/06/08;过去 12 个月发布了 53 个版本。

版本发布日期距今
9.1.0latest2026/11/121 天前
9.1.0-next.3next2026/11/112 天前
9.0.72026/11/112 天前
9.1.0-next.22026/10/2915 天前
9.1.0-next.12026/10/2816 天前
9.1.0-next.02026/10/2816 天前

其他发布通道:msal-v5 → 7.4.3-msal-v5.1,trusted-publishing-20261015 → 9.0.5-trusted-publishing-20261015-9dfe7602cd2a49a8a9df00d62c26e7304a82a85a,next → 9.1.0-next.3。

关于 @equinor/fusion-framework 的常见问题

如何安装 @equinor/fusion-framework?

在项目目录运行 npm install @equinor/fusion-framework,或使用 pnpm add / yarn add / bun add。

@equinor/fusion-framework 支持 TypeScript 吗?

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

@equinor/fusion-framework 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@equinor/fusion-framework 可以商用吗?

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

@equinor/fusion-framework 的下载量有多少?

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

@equinor/fusion-framework 还在维护吗?

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