@eventcatalog/fitness

中文文档
0.1.2发布于 2026/11/10MITTypeScriptESM + CJS构建来源已验证近 30 天下载 5783

为 EventCatalog 写入建筑健身功能, 并在本地或 CI 中运行

中文使用文档
文档目录12 节
  1. @ eventcatalog/ 适应性
  2. 安装
  3. 写健身功能
  4. 健身活动所在地
  5. 二. 背景情况
  6. 违反
  7. 运行他们
  8. 在CI语中
  9. 报告
  10. 信托
  11. 程序使用
  12. 文档

@ eventcatalog/ 适应性

建筑健身功能 事件目录。用 TypeScript 写出您的建筑规则, 在本地或 CI 中对照您的目录运行这些规则, 并获得解密内容的报告 .

你决定一个健康的建筑是什么样子。 EventCatalog给每个规则目录检查,运行并报告结果.

适配功能检查您的目录结构 文档他们不检查你的运行系统.

安装

npx eventcatalog fitness check 运行健身功能而不安装其他设备。 安装类型和编辑器支持的软件包 :

npm install --save-dev @eventcatalog/fitness

写健身功能

健身功能是默认导出 a *.fitness.ts 文件在一个 fitness/ 文件夹 :

// fitness/events-have-owners.fitness.ts
import { defineFitnessFunction } from '@eventcatalog/fitness';

export default defineFitnessFunction({
  id: 'events-have-owners',
  name: 'Every event has an owner',
  severity: 'error', // or 'warning', which is reported without failing the check

  async run({ catalog }) {
    const events = (await catalog.getEvents({ latestOnly: true })) ?? [];

    // One violation per problem; an empty array means the rule passed
    return events
      .filter((event) => !event.owners?.length)
      .map((event) => ({
        message: `${event.name} has no owners`,
        resources: [{ type: 'event', id: event.id, version: event.version }],
        suggestion: 'Add the team responsible for the event to its owners.',
      }));
  },
});

健身活动所在地

my-catalog/
├── fitness/                                  # Global rules: no `resource`
│   ├── events-have-owners.fitness.ts
│   └── naming/message-names.fitness.ts       # Folders inside fitness/ are fine
└── domains/
    └── Orders/
        ├── index.mdx
        └── fitness/
            └── domain-boundaries.fitness.ts  # `resource` is the Orders domain
  • 仅 *.fitness.ts 文件已运行 。 其他文件(例如共享帮助)可以通过健身功能来导入.
  • A 类 fitness/ 资源文件夹中的文件夹(一个域、系统、服务、事件、命令、查询、信道、流量、实体、数据存储、数据产品、ADR或图表)赋予其资源作为 resource内置文件夹 versioned/<version>/ 给这个版本.
  • 位置设定 resource,而不是一个函数可以看到的:每个函数都可以查询整个目录.
  • *.fitness.ts 外部的文件 a fitness/ 文件夹不运行,而是作为诊断报告.

二. 背景情况

run({ resource, catalog }) 获取 :

名称说明
resource该职能的资源与其 type (单位:千美元)domain, (中文(简体) ), service, (中文(简体) ), event, (中文(简体) ), container,(......), id, (中文(简体) ), version 还有前题. undefined 全球职能.
catalog只读访问目录:读取方法 事件Catalog SDK,例如 getEvents, (中文(简体) ), getService, (中文(简体) ), getGraph 财务报告和审定财务报表 getOwnersForResource。 。 。 .

catalog 没有方法可以写入目录,每一次呼叫都会返回一份副本,所以更改它返回的内容不会改变其他的呼叫或函数所看到的.

违反

type FitnessViolation = {
  message: string;
  resources?: { type: string; id: string; version?: string }[]; // linked from the violation in EventCatalog
  details?: string;
  suggestion?: string;
};

资源与目录相匹配。 与资源不符的参考文献保留在报表中,标记 resolved: false。 。 。 .

运行他们

npx eventcatalog fitness check
# or, without @eventcatalog/core installed
npx @eventcatalog/cli fitness check
选项说明
--output <path>与目录相比,报告在哪里撰写(.eventcatalog/fitness/results.json(中文(简体) )
--format <format>text (违约)或 json
退出代码何时
0每一个功能都过去,或者只警告
1函数发现错误严重性违规, 或无法评估
2检查无法运行( 例如目录目录不存在)

函数扔出,返回不属于违规列表的事物,或无法装入的,报告为 error,与侵权行为分开.

在CI语中

# .github/workflows/fitness.yml
name: Architecture fitness
on: pull_request
jobs:
  fitness:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
      - run: npm ci
      - run: npx eventcatalog fitness check

报告

每次运行都会写 .eventcatalog/fitness/results.json:时间,目录的 git 承诺,一个摘要和每个函数的状态(passed, (中文(简体) ), warning, (中文(简体) ), failed 或者说 error),资源,违规和出错.

信托

Fitness 函数是您目录中的代码,运行时的访问权限与您工程中其它脚本相同. 只运行你信任的健身功能, 本地或CI。 EventCatalog 从未在浏览器或页面请求中运行过它们 .

程序使用

import { evaluateFitness, formatFitnessReport, getFitnessExitCode } from '@eventcatalog/fitness';

const report = await evaluateFitness({ dir: './my-catalog' });
console.log(formatFitnessReport(report));
process.exitCode = getFitnessExitCode(report);

文档

见 事件目录文档 为了更多.

版本与发布记录

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

版本发布日期距今
0.1.2latest2026/11/103 天前
0.1.12026/10/2321 天前
0.1.02026/10/1925 天前
0.0.12026/10/1925 天前
0.0.0-stage2026/10/1925 天前

关于 @eventcatalog/fitness 的常见问题

@eventcatalog/fitness 是什么?

为 EventCatalog 写入建筑健身功能, 并在本地或 CI 中运行

如何安装 @eventcatalog/fitness?

在项目目录运行 npm install @eventcatalog/fitness,或使用 pnpm add / yarn add / bun add。

@eventcatalog/fitness 支持 TypeScript 吗?

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

@eventcatalog/fitness 支持 ESM 还是 CommonJS?

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

@eventcatalog/fitness 可以商用吗?

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

@eventcatalog/fitness 的下载量有多少?

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

@eventcatalog/fitness 还在维护吗?

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