# @dunx/core 中文文档

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

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

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

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

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

- 包体积（解压后）：193 kB，65 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：0 个
- peer 依赖：@opentelemetry/api ^1\.4\.0
- 首次发布：2026-08-02T08:01:26.971Z
- 最新版本发布：2026-10-30T04:57:41.398Z
- 近 30 天下载量：6237（2026-10-13 至 2026-11-11，npm 官方下载统计）
- 已发布版本数：83（近 12 个月 83 个）

## 中文简介

Dunx 框架的 DI 容器、模块、生命周期和可注入的 Logger 合同

## 安装

```sh
npm install @dunx/core
```

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

## README

# @ dunx/ 核心

依赖性注射容器、模块、生命周期、配置和 `Logger` 财务报告和审定财务报表 `RequestContext` 合同 [双关](https://github.com/petarzarkov/dunx)。 。 。 .

**无依取相.** 其它 dunx 包可以注入一个 `Logger` 无 安装一个日志库.

## 安装

```bash
bun add @dunx/core @dunx/transform
```

## 使用量

构造器注入不需要装饰器 :

```ts
import { AppFactory, Module } from '@dunx/core';

export class UsersService {
  constructor(private readonly repo: UsersRepository) {}
}

@Module({
  providers: [UsersRepository, UsersService],
  exports: [UsersService], // absent means nothing is exported
})
export class UsersModule {}

const app = await AppFactory.create(AppModule);
```

你不需要这样 `@Injectable`, (中文(简体) ), `@Inject`, (中文(简体) ), `reflect-metadata` 或者说 `experimentalDecorators`。 。 。 . `@dunx/transform` 读取每个构造器的参数 文件加载时的类型。 打开它 `bunfig.toml`一次给应用程序,一次给 用于测试:

```toml
preload = ["@dunx/transform/preload"]

[test]
preload = ["@dunx/transform/preload"]
```

## 这是什么

| 区域 | 它包含什么 | 指南 |
| --- | --- | --- |
| 供应商 | 建构剂注射, `provide()`, (中文(简体) ), `token()`, (中文(简体) ), `inject()` | [供应商](https://npmcn.com/package/docs/guide/03-providers.md) |
| 模块 | 范围界定, `imports`, (中文(简体) ), `exports`, (中文(简体) ), `global`, (中文(简体) ), `forRoot` | [模块](https://npmcn.com/package/docs/guide/04-modules.md) |
| 生命周期 | `onInit`, (中文(简体) ), `onBeforeShutdown`, (中文(简体) ), `onShutdown`,信号处理器 | [生命周期](https://npmcn.com/package/docs/guide/07-lifecycle.md) |
| 配置 | `ConfigModule.forRoot`页:1 `validate` 函数或一个 `schema` | [配置](https://npmcn.com/package/docs/guide/12-configuration.md) |
| 日志 | 这个 `Logger` 合同和 `ConsoleLogger` | [日志](https://npmcn.com/package/docs/guide/13-logging.md) |
| 活动 | `EventBus`, (中文(简体) ), `AppEvent`, (中文(简体) ), `@OnEvent`, (中文(简体) ), `EventRegistry` | [活动](https://npmcn.com/package/docs/guide/27-events.md) |
| 状态 | `Durations`, (中文(简体) ), `Counter`, (中文(简体) ), `Gauge`, (中文(简体) ), `RuntimeStats`, (中文(简体) ), `EventLoopLag` | [计量](https://npmcn.com/package/docs/guide/24-metrics.md) |
| 复原力 | `ResiliencePolicy`超时 重试 后退 焦躁 后退, `CircuitBreaker`, (中文(简体) ), `Bulkhead` | [复原力](https://npmcn.com/package/docs/guide/26-resilience.md) |
| 追踪 | 这个 `Tracer` 合同, `NoopTracer`,以及 `OtelModule` 打开 `/otel` | [追踪](https://npmcn.com/package/docs/guide/31-tracing.md) |

## 子路径

| 子路径 | 包含 |
| --- | --- |
| `@dunx/core` | 上所为所取. 从未进口 `@opentelemetry/api` |
| `@dunx/core/otel` | `OtelModule` 财务报告和审定财务报表 `OtelTracer`,在可选对等点上 `@opentelemetry/api` |

```bash
bun add @opentelemetry/api   # only for @dunx/core/otel, ^1.4.0
```

`@opentelemetry/api` 是一个对等的依赖,以便您的 SDK 和 Dunx 使用 同样的副本。 如果安装了两个拷贝,跨度可以不出错地丢失. dunx 不包括 SDK 或 出口者: 在打电话前先登记自己的 `create`。 。 。 .

## 页:1

-   **每个单元都是自己的范围.** 一个模块可以使用它宣布的和什么 它导入的模块。 列出其他模块在 `exports`· ; 离开 `exports` 出局后,什么也没有分享. `global: true` 制作模块 到处都有出口.
    
-   如果一个构造参数的类型在运行时不存在(接口, a) 原始、联合或只输入类型), **启动失败, 命名错误 该参数**。你从来没有得到一个沉默 `undefined`参数 默认值维持其默认值.
    
-   `Logger`, (中文(简体) ), `RequestContext` 财务报告和审定财务报表 `Tracer` 总是可以注射。 默认 为: `ConsoleLogger`, (中文(简体) ), `AsyncRequestContext` 联 合 国 `AsyncLocalStorage`和 `NoopTracer`,而绑定一个模块取代默认值. `@dunx/http` 依赖此程序可以在没有日志模块的应用程序中登录请求 .
    
-   `ConsoleLogger` 收藏 `info` 并降低到每一次事件记录一次. `warn` 上面写着,和在他们面前等待的.
    
-   统计类只使用 `node:perf_hooks` 财务报告和审定财务报表 `process`,所以软件包 仍然没有依附关系.
    
-   **`Durations` 解决节点本土直方图的四个问题:**
    
    | 原始直方图 | `Durations` |
    | --- | --- |
    | `record(0)` 掷出 `ERR_OUT_OF_RANGE` | 1下的价值被记录为1 |
    | 空直方图报告 `min` 9223372036854776000 (英语), `mean` `NaN` | 一个空快照是 `{ count: 0 }` |
    | `percentiles` 是一个 `Map` 联 合 国 `bigint`,顺序排序为 `{}` | `percentile(n)` 返回数字 |
    | `mean` 成本42.2我们 | 没有 `mean` |
    

## 许可证

麻省理工学院

## 常见问题

### @dunx/core 是什么？

Dunx 框架的 DI 容器、模块、生命周期和可注入的 Logger 合同

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

在项目目录运行 npm install @dunx/core，或使用 pnpm add / yarn add / bun add。

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

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

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

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

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

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

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

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

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

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

