# @defra/cdp-metrics 中文文档

规范地址：https://npmcn.com/package/%40defra/cdp-metrics/

版本：0\.6\.1
npm 元数据更新时间：2026-10-29T08:44:05.906Z
中文译文更新时间：2026-11-11T21:03:18.610Z
软件包许可：OGL-UK-3\.0

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

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

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

- 包体积（解压后）：20.4 kB，8 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>=22
- 运行依赖：1 个
- 首次发布：2025-07-08T07:55:00.770Z
- 最新版本发布：2026-10-05T08:07:03.476Z
- 近 30 天下载量：35020（2026-10-12 至 2026-11-10，npm 官方下载统计）
- 已发布版本数：8（近 12 个月 5 个）

## 中文简介

CDP 平台上的自定义计量工具库

## 安装

```sh
npm install @defra/cdp-metrics
```

也可以使用：`pnpm add @defra/cdp-metrics`、`yarn add @defra/cdp-metrics`、`bun add @defra/cdp-metrics`

## README

# cdp 计量

一个简单的包装 [AWS 嵌入式计量格式( EMF)](https://github.com/awslabs/aws-embedded-metrics-node) 用于Node.js应用程序。 它利用计数器、计时器、测量仪和尺寸测量仪,用最小的锅炉来提供排放相容的云表测量仪.

## 特征

-   Emit 计数器(国家单位)
-   时间同步函数
-   电量计、字节尺寸和持续时间
-   用于错误跟踪的可选日志注射
-   在单位测试中容易被嘲笑

## 安装

```bash
npm install @defra/cdp-metrics
```

## 配置

### 地方发展

这个库使用AWS EMF来放出度量衡. 改为: **开发期间安全禁用 Cloud Watch 写入**,设置以下环境变量:

```bash
AWS_EMF_ENVIRONMENT=Local
```

我建议你用这个 `package.json` 防止在部署的服务中意外关闭度量衡.

```json
{
  "scripts": {
    "dev": "AWS_EMF_ENVIRONMENT=Local run-p frontend:watch server:watch",
    "dev:debug": "AWS_EMF_ENVIRONMENT=Local run-p frontend:watch server:debug"
  }
}
```

## 生产

**不设置 AWS EMF ENVIRONMENT=本地**,或者将默不作声地丢弃指标。 AWS EMF 将自动向 Cloud Watch ECS 环境发布.

## 使用量

### 基本计量

```js
import { counter, timer, millis, gauge, byteSize } from '@defra/cdp-metrics'

const metrics = new Metrics(logger)

await metrics.counter('processedItems', 5)
await metrics.millis('dbQueryTime', 128)
await metrics.gauge('inFlightJobs', 3)
await metrics.byteSize('responseSize', 1024)
```

可在不等待阻止行刑的情况下发出计量电话.

### 计时函数

```js
const metrics = new Metrics(logger)
await metrics.timer('myHandlerTime', async () => {
  // Do some async work
})
```

### 有维度

```js
await counter('apiCall', 1, { service: 'user', route: '/login' })
```

### Hapi 插件

将参数附加到服务器并请求上下文并配置日志 :

```js
import { metrics } from '@defra/cdp-metrics'

await server.register(metrics)

server.metrics.counter('startup', 1)
request.metrics.timer('dbFetch', async () => fetchUsers())
```

## 测试

你用得着 `AWS_EMF_ENVIRONMENT=Local` 在你的测试中,如果你不想 度量衡被嘲笑.

嘲弄用于验证排放的度量衡的内置计量法:

```js
import * as embedded from 'aws-embedded-metrics'

vi.spyOn(embedded, 'createMetricsLogger').mockImplementation(() => ({
  putMetric: vi.fn(),
  flush: vi.fn(),
  setDimensions: vi.fn()
}))
```

## 处理错误

如果任何计量标准没有发出,则会记录警告(如果设置了日志)。 您可以输入自己的日志 :

```js
import pino from 'pino'
new Metrics(pino())
```

## 常见问题

### @defra/cdp-metrics 是什么？

CDP 平台上的自定义计量工具库

### 如何安装 @defra/cdp-metrics？

在项目目录运行 npm install @defra/cdp-metrics，或使用 pnpm add / yarn add / bun add。

### @defra/cdp-metrics 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/defra\_\_cdp-metrics 是否存在。

### @defra/cdp-metrics 支持 ESM 还是 CommonJS？

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

### @defra/cdp-metrics 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=22。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @defra/cdp-metrics 可以商用吗？

@defra/cdp-metrics 使用 OGL-UK-3\.0 许可。声明的许可为 OGL-UK-3\.0，请阅读许可原文确认使用条件。以上为概括，不构成法律意见，请以许可原文为准。

### @defra/cdp-metrics 的下载量有多少？

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

### @defra/cdp-metrics 还在维护吗？

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

