# @dunx/infra 中文文档

规范地址：https://npmcn.com/package/%40dunx/infra/

版本：3\.10\.6
npm 元数据更新时间：2026-10-30T04:58:12.500Z
中文译文更新时间：2026-11-13T00:27:37.770Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40dunx/infra
原文对照：https://npmcn.com/package/%40dunx/infra/?lang=original
项目主页：https://github.com/petarzarkov/dunx/tree/main/packages/infra#readme
源码仓库：https://github.com/petarzarkov/dunx

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

- 包体积（解压后）：466 kB，155 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：2 个
- peer 依赖：react \>=18\.0\.0，bullmq ^6\.0\.5，resend ^6\.0\.0，ioredis \>=5\.0\.0，@dunx/core ^3\.10\.6，@types/bun \>=1\.4\.3，nodemailer ^10\.0\.0，drizzle-orm ^0\.45\.2，rabbitmq-client ^5\.0\.8，@react-email/render ^2\.0\.0
- 首次发布：2026-08-02T08:59:00.281Z
- 最新版本发布：2026-10-30T04:58:12.082Z
- 近 30 天下载量：3660（2026-10-13 至 2026-11-11，npm 官方下载统计）
- 已发布版本数：83（近 12 个月 83 个）

## 中文简介

数据库, Redis, 队列, AMQP, 调度, 存储, 图像和 Dunx 的日志基础设施 。 细雨过包子:sqlite和Bun.SQL,牛克过Bun. Redisclient,兔子MQ的客户端,外加Bun.file,Bun.Glob,Bun.S3Client, Bun. 图像和 @ arkv/ logger

## 安装

```sh
npm install @dunx/infra
```

也可以使用：`pnpm add @dunx/infra`、`yarn add @dunx/infra`、`bun add @dunx/infra`

## README

# 翻译:

基础设施 [双关](https://github.com/petarzarkov/dunx):数据库, Redis/Valkey,缓存,队列,消息经纪人,文件存储,图像,调度, 电子邮件、页码和记录 11个区域 一个包裹.

Bun船的原生地 原生地是运行的地方: `Bun.SQL`, (中文(简体) ), `bun:sqlite`, (中文(简体) ), `Bun.RedisClient`, (中文(简体) ), `Bun.file`, (中文(简体) ), `Bun.Glob`, (中文(简体) ), `Bun.S3Client`, (中文(简体) ), `Bun.Image`, (中文(简体) ), `Bun.cron`。无 `pg`,没有 `better-sqlite3`,没有 `ioredis`,没有 `@aws-sdk`,没有 `glob`,没有 `sharp`。 。 。 .

五个领域整合了一个成熟的图书馆,而不是手卷: `/db` 结束 `drizzle-orm`, (中文(简体) ), `/queue` 结束 `bullmq`, (中文(简体) ), `/amqp` 结束 `rabbitmq-client`, (中文(简体) ), `/logger` 结束 `@arkv/logger`,以及 `/email` 以任何给养者的名称命名.

前三个是 **可选同伴依赖关系**因此,应用程序只使用 `/files` 没有安装它们. `@arkv/logger` 属于一党和完全依赖。 前两个驾驶一个 Bun API 在下面; `rabbitmq-client` 说电线协议 Bun船没有客户端,完毕 `node:net`, (中文(简体) ), bun是当地执行的.

## 安装

```bash
bun add @dunx/infra @dunx/core
# plus what the areas you use need
bun add drizzle-orm     # /db
bun add bullmq          # /queue
bun add rabbitmq-client # /amqp
bun add resend          # /email/resend
bun add nodemailer      # /email/smtp
bun add react @react-email/render # /email/react
```

## 子路径

向导为每行有条可循;本表为索引.

| 子路径 | 这是什么 | 指南 |
| --- | --- | --- |
| `@dunx/infra/db` | **细雨** 结束 `bun:sqlite` 财务报告和审定财务报表 `Bun.SQL`、交易、种子、命名和租户数据源、查询时间 | [数据库](https://npmcn.com/package/docs/guide/14-database.md) |
| `@dunx/infra/redis` | `Bun.RedisClient`,命名连接, pub/sub | [数据库](https://npmcn.com/package/docs/guide/14-database.md) |
| `@dunx/infra/cache` | `Cache` 在记忆中, Redis 或双层 `CacheStore`, (中文(简体) ), `CacheMetrics` | [缓存](https://npmcn.com/package/docs/guide/15-caching.md) |
| `@dunx/infra/queue` | **公牛数量** 结束 `Bun.RedisClient`: 处理者、出版者、工人 | [队列](https://npmcn.com/package/docs/guide/19-queues.md) |
| `@dunx/infra/amqp` | **兔子客户端**数字 : `@AmqpHandler`,出版社,耗尽的消费者 | [信件经纪人](https://npmcn.com/package/docs/guide/20-message-brokers.md) |
| `@dunx/infra/schedule` | `Bun.cron` 和计时器 : `@Cron`, (中文(简体) ), `@Interval`, (中文(简体) ), `@OnceOnBoot` | [时间安排](https://npmcn.com/package/docs/guide/16-scheduling.md) |
| `@dunx/infra/files` | 一个 `Storage` 合同终止 `Bun.file` 财务报告和审定财务报表 `Bun.S3Client` | [文件与图像](https://npmcn.com/package/docs/guide/18-files-and-images.md) |
| `@dunx/infra/email` | 一个 `EmailTransport` 合同、干跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑跑 `bunx dunx-email preview` | [电子邮件](https://npmcn.com/package/docs/guide/29-email.md) |
| `@dunx/infra/email/resend` | **重新发送** | [电子邮件](https://npmcn.com/package/docs/guide/29-email.md) |
| `@dunx/infra/email/smtp` | **节点邮件** | [电子邮件](https://npmcn.com/package/docs/guide/29-email.md) |
| `@dunx/infra/email/react` | **反应电子邮件**,作为一个 `TemplateRenderer` 其它问题 | [电子邮件](https://npmcn.com/package/docs/guide/29-email.md) |
| `@dunx/infra/images` | 一条无法改变的管道 `Bun.Image` | [文件与图像](https://npmcn.com/package/docs/guide/18-files-and-images.md) |
| `@dunx/infra/logger` | **`@arkv/logger`** 与核心相连 `Logger` 合同 | [日志](https://npmcn.com/package/docs/guide/13-logging.md) |
| `@dunx/infra/pagination` | 密钥集页码:光标编码器、选项解析器、细雨查询 | [数据库](https://npmcn.com/package/docs/guide/14-database.md) |
| `@dunx/infra/pagination/cursor` | 同样的解码器和解析器没有细雨查询,所以没有安装细雨就能解析 | [数据库](https://npmcn.com/package/docs/guide/14-database.md) |

## 使用量

```ts
import { Module } from '@dunx/core';
import { DbModule, SqliteOptions } from '@dunx/infra/db';
import { RedisModule } from '@dunx/infra/redis';
import * as schema from './schema.js';

@Module({
  imports: [
    DbModule.forRoot(new SqliteOptions({ schema, filename: './app.db' })),
    // No url: Bun resolves $VALKEY_URL, then $REDIS_URL, then localhost.
    RedisModule.forRoot({ maxRetries: 0 }),
  ],
})
export class InfraModule {}
```

与 `OtelModule` 从 `@dunx/core/otel` 进口, `/db`, (中文(简体) ), `/redis`, (中文(简体) ), `/queue` 财务报告和审定财务报表 `/amqp` 打开 OpenTelection 跨度; 见 [追踪](https://npmcn.com/package/docs/guide/31-tracing.md)。 。 。 .

每个地区都有 `forRootAsync`,这是 `forRoot` 前面有个工厂 说吧 它存在于一个零参数函数不能做的一件事: 注射,所以 url 或文件名可以关闭 `ConfigService`。 。 。 .

## 两项公约

**任何可以由构造参数注入的都是运行时类,从不 接口**,因为一个接口会擦去并留下什么 `@dunx/transform` 以记录.

当 dunx 定义合同时, 符是抽象类(`Storage`, (中文(简体) ), `DbConnection`, (中文(简体) ), `ImagesOptions`) (中文(简体) ). 否则,这是图书馆自己的课 (单位:千美元)`BunSQLiteDatabase`, (中文(简体) ), `ContextStore`) (中文(简体) ). 三个出口是: `token()`相反, 因为没有课适合他们: `redisConnection(name)`, (中文(简体) ), `redisMetrics(name)` 财务报告和审定财务报表 `LoggerSettings`。 。 。 .

**如果一个区域完全在根管里,那么全部都是.** `/db`, (中文(简体) ), `/queue`, (中文(简体) ), `/amqp` 财务报告和审定财务报表 `/email` 四个桶不再出口: 通过静态导入可选对等端, 因此导出它们会使 `drizzle-orm`, (中文(简体) ), `ioredis`, (中文(简体) ), `rabbitmq-client` 或者说 `resend` 硬性要求 `import '@dunx/infra'`联系他们的子路.

内部 `/email` 拆分会更进一步 每一个供应商进口都位于 子路径,需要它,没有其它地方: `resend` 内 `/email/resend`, (中文(简体) ), `nodemailer` 内 `/email/smtp`, (中文(简体) ), `react` 财务报告和审定财务报表 `@react-email/render` 内 `/email/react`。 。 。 .

这么说吧 `@dunx/infra/email` 装入没有安装的4个,您可以使用它 日志和内存传输。 这个 `dunx-email` bin 装入渲染器 `import()` 只有在它需要的时候.

`@dunx/infra`测试哪个文件可以导入每个销售商, 测试底部 子路径不导入其中任何一种,而且所有四种都是可选择的.

**时机不对 除非有要求.** `{ metrics: true }` 是最后一个参数 `DbModule`, (中文(简体) ), `CacheModule`, (中文(简体) ), `RedisModule` 财务报告和审定财务报表 `QueueModule`,绑定 a `QueryMetrics`, (中文(简体) ), `CacheMetrics`, (中文(简体) ), `RedisMetrics` 或者说 `QueueMetrics`。 。 。 .

每一措施:

| 子路径 | 时间 |
| --- | --- |
| `/db` | 每问. Dunx将它创造的驱动器包起来 因为细雨 `logger` 选项不报告持续时间 |
| `/cache` | 在配置上击出并丢失 `CacheStore`,包括一个直接注入。 一个连在一起的 `wrap` 数为一 |
| `/redis` | 每个命令 |
| `/queue` | `publish()`,处理器在此过程中运行。 A 类 `background` 处理器运行于一个加固的进程中, 没有定时 |

见 [计量](https://npmcn.com/package/docs/guide/24-metrics.md)。 。 。 .

## 反对

Bun 1.4.2,细细细雨0.45.2,公牛mq 6.0.5,兔子mq-客户 5.0.8,再版 6.2.8, 节点邮件器 10.0.9 和 @ react-email/render 2.1.0. 邦顿的 文档不完整 所以行为是衡量而不是解读的 这个 证据在 [文献/档案](https://npmcn.com/package/docs/ARCHITECTURE.md) 财务报告和审定财务报表 [文档/bun-apis.md](https://npmcn.com/package/docs/bun-apis.md)。 。 。 .

## 许可证

麻省理工学院

## 常见问题

### @dunx/infra 是什么？

数据库, Redis, 队列, AMQP, 调度, 存储, 图像和 Dunx 的日志基础设施 。 细雨过包子:sqlite和Bun\.SQL,牛克过Bun\. Redisclient,兔子MQ的客户端,外加Bun\.file,Bun\.Glob,Bun\.S3Client, Bun\. 图像和 @ arkv/ logger

### 如何安装 @dunx/infra？

在项目目录运行 npm install @dunx/infra，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@dunx/core（^3\.10\.6）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。它还提供命令行工具 dunx-email，可以用 npx dunx-email 直接运行。

### @dunx/infra 支持 TypeScript 吗？

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

### @dunx/infra 支持 ESM 还是 CommonJS？

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

### @dunx/infra 可以商用吗？

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

### @dunx/infra 的下载量有多少？

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

### @dunx/infra 还在维护吗？

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

