# @eventcatalog/fitness 中文文档

规范地址：https://npmcn.com/package/%40eventcatalog/fitness/

版本：0\.1\.2
npm 元数据更新时间：2026-11-10T13:23:28.407Z
中文译文更新时间：2026-11-14T01:06:19.721Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40eventcatalog/fitness
原文对照：https://npmcn.com/package/%40eventcatalog/fitness/?lang=original
项目主页：https://github.com/event-catalog/eventcatalog#readme
源码仓库：https://github.com/event-catalog/eventcatalog

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：169 kB，9 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：3 个
- 首次发布：2026-10-19T08:43:59.913Z
- 最新版本发布：2026-11-10T13:23:28.058Z
- 近 30 天下载量：5783（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：5（近 12 个月 5 个）

## 中文简介

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

## 安装

```sh
npm install @eventcatalog/fitness
```

也可以使用：`pnpm add @eventcatalog/fitness`、`yarn add @eventcatalog/fitness`、`bun add @eventcatalog/fitness`

## README

## @ eventcatalog/ 适应性

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

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

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

### 安装

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

```bash
npm install --save-dev @eventcatalog/fitness
```

### 写健身功能

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

```ts
// 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.',
      }));
  },
});
```

### 健身活动所在地

```text
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](https://www.eventcatalog.dev/docs/development/sdk),例如 `getEvents`, (中文(简体) ), `getService`, (中文(简体) ), `getGraph` 财务报告和审定财务报表 `getOwnersForResource`。 。 。 . |

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

### 违反

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

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

### 运行他们

```bash
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语中

```yaml
# .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 从未在浏览器或页面请求中运行过它们 .

### 程序使用

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

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

### 文档

见 [事件目录文档](https://www.eventcatalog.dev/docs) 为了更多.

## 常见问题

### @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 和提交记录判断。

