# @di-framework/cloudfoundry 中文文档

规范地址：https://npmcn.com/package/%40di-framework/cloudfoundry/

版本：6\.0\.30
npm 元数据更新时间：2026-11-06T22:52:41.306Z
中文译文更新时间：2026-11-12T06:28:21.069Z
软件包许可：\(MIT OR Apache-2\.0\)

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

原始 npm 页面：https://www.npmjs.com/package/%40di-framework/cloudfoundry
原文对照：https://npmcn.com/package/%40di-framework/cloudfoundry/?lang=original
项目主页：https://github.com/di-framework/platform
源码仓库：https://github.com/di-framework/platform

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

- 包体积（解压后）：94 kB，32 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：0 个
- peer 依赖：typescript ^5 \|\| ^6 \|\| ^7，@di-framework/core ^6
- 首次发布：2026-09-06T13:11:57.168Z
- 最新版本发布：2026-11-06T22:52:40.972Z
- 近 30 天下载量：3617（2026-10-12 至 2026-11-10，npm 官方下载统计）
- 已发布版本数：43（近 12 个月 43 个）

## 中文简介

用于VCAP SERVICES发现的Cloud创始连接器,应用程序元数据,以及自动化的DI绑定.

## 安装

```sh
npm install @di-framework/cloudfoundry
```

也可以使用：`pnpm add @di-framework/cloudfoundry`、`yarn add @di-framework/cloudfoundry`、`bun add @di-framework/cloudfoundry`

## README

# @ di- framework/ cloudfoundry

云创建连接器 `@di-framework` - 自动 `VCAP_SERVICES` 财务报告和审定财务报表 `VCAP_APPLICATION` ,强烈地打入ServiceInfo模型,SPI创建者可扩展注册,以及自动化的DI绑定.

被"春云"接通者所启发 (中文(简体) )`spring-cloud-cloudfoundry-connector`),此软件包精简运行 `@di-framework` 在Cloud Foundry和Tanzu应用服务上的应用.

## 特征

-   **自动环境检测**: 通过快速检测 `CloudFoundryDetector` 财务报告和审定财务报表 `isCloudFoundry()`。 。 。 .
-   **应用程序信息解析**: 强烈打字 `CloudFoundryApplicationInfo` 包含应用程序名称、URI、实例索引、空间、限制等.
-   **服务信息创建者( SPI)**: 广泛发现和规范型号,用于:
    -   **关系数据库**: PostgreSQL, MySQL, MariaDB, SQLite (英语:`RelationalServiceInfo`(中文(简体) )
    -   **重写/ 快取**: Redis 独立, TLS, 集群(`RedisServiceInfo`(中文(简体) )
    -   **AMQP / 信件经纪人**:兔子MQ, CloudAMQP (中文(简体) )`AmqpServiceInfo`(中文(简体) )
    -   **Blob 存储 / S3**: MinIO, AWS S3, 对象存储器(`BlobStorageServiceInfo`(中文(简体) )
    -   **用户提供的服务**数字 : `cf cups` 海关服务`UserProvidedServiceInfo`(中文(简体) )
-   **DI 和装饰器集成**数字 :
    -   `@CloudFoundryService('service-name')` 参数和财产注入
    -   `@VcapApplication()` 应用程序元数据注入
    -   `@EnableCloudFoundryConnectors()` 用于整个集装箱的自动接线
-   **本地倒计时**: 自动回落到标准本地环境变量(`DATABASE_URL`, (中文(简体) ), `REDIS_URL`, (中文(简体) ), `AMQP_URL`, (中文(简体) ), `S3_BUCKET`)跑出"云铸"外.

## 安装

```bash
bun add @di-framework/cloudfoundry
```

## 快速启动

### 1\. 使用 `@EnableCloudFoundryConnectors` 财务报告和审定财务报表 `@CloudFoundryService`

```typescript
import { Container } from '@di-framework/core/decorators';
import {
  CloudFoundryService,
  EnableCloudFoundryConnectors,
  RelationalServiceInfo,
  RedisServiceInfo,
  VcapApplication,
  CloudFoundryApplicationInfo,
} from '@di-framework/cloudfoundry';

@EnableCloudFoundryConnectors()
@Container()
export class ApplicationService {
  @VcapApplication()
  private appInfo!: CloudFoundryApplicationInfo;

  @CloudFoundryService('my-postgres-db')
  private dbService!: RelationalServiceInfo;

  @CloudFoundryService('my-redis-cache')
  private redisService!: RedisServiceInfo;

  start() {
    console.log(`Running app ${this.appInfo?.applicationName}`);
    console.log(`Database URI: ${this.dbService.uri}`);
    console.log(`Redis host: ${this.redisService.host}:${this.redisService.port}`);
  }
}
```

### 2\. 通过程序发现 `CloudFoundryEnvironment`

```typescript
import { CloudFoundryEnvironment } from '@di-framework/cloudfoundry';

const cfEnv = new CloudFoundryEnvironment();

if (cfEnv.isCloudFoundry()) {
  const appInfo = cfEnv.getApplicationInfo();
  console.log(`Space: ${appInfo?.spaceName}, Instance: ${appInfo?.instanceIndex}`);

  // Retrieve primary relational database
  const db = cfEnv.getRelationalServiceInfo();
  if (db) {
    console.log(`Connected to ${db.dialect} at ${db.host}:${db.port}/${db.database}`);
  }

  // Retrieve Redis service
  const redis = cfEnv.getRedisServiceInfo();
  if (redis) {
    console.log(`Redis URI: ${redis.uri}`);
  }
}
```

### 3\. 定制服务创建者

您可以注册自定义服务信息创建者 `ServiceInfoCreatorRegistry`数字 :

```typescript
import {
  CloudFoundryServiceInfoCreator,
  getDefaultRegistry,
  RawVcapServiceData,
  CloudFoundryServiceInfo,
} from '@di-framework/cloudfoundry';

export interface ElasticsearchServiceInfo extends CloudFoundryServiceInfo {
  readonly uri: string;
}

export class ElasticsearchServiceInfoCreator implements CloudFoundryServiceInfoCreator<ElasticsearchServiceInfo> {
  accept(data: RawVcapServiceData): boolean {
    return data.label.includes('elasticsearch') || (data.tags || []).includes('elasticsearch');
  }

  createServiceInfo(data: RawVcapServiceData): ElasticsearchServiceInfo {
    const creds = data.credentials || {};
    return {
      id: data.name,
      name: data.name,
      label: data.label,
      tags: [...(data.tags || [])],
      credentials: creds,
      uri: String(creds.uri ?? 'http://localhost:9200'),
    };
  }
}

getDefaultRegistry().registerCreator(new ElasticsearchServiceInfoCreator());
```

## 许可证

任何许可 [麻省理工学院](https://npmcn.com/package/LICENSE-MIT) 或者说 [阿帕奇 - 2.0](https://npmcn.com/package/LICENSE-APACHE)随便你.

## 常见问题

### @di-framework/cloudfoundry 是什么？

用于VCAP SERVICES发现的Cloud创始连接器,应用程序元数据,以及自动化的DI绑定\.

### 如何安装 @di-framework/cloudfoundry？

在项目目录运行 npm install @di-framework/cloudfoundry，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：typescript（^5 \|\| ^6 \|\| ^7）、@di-framework/core（^6）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @di-framework/cloudfoundry 支持 TypeScript 吗？

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

### @di-framework/cloudfoundry 支持 ESM 还是 CommonJS？

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

### @di-framework/cloudfoundry 可以商用吗？

@di-framework/cloudfoundry 使用 \(MIT OR Apache-2\.0\) 许可。可在 MIT、Apache-2\.0 中任选其一遵守。选择 MIT 时，宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @di-framework/cloudfoundry 的下载量有多少？

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

### @di-framework/cloudfoundry 还在维护吗？

最新版本 6\.0\.30 发布于 2026/11/07（5 天前）；至今共发布 43 个版本，其中过去 12 个月发布了 43 个；首次发布于 2026/09/06。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

