# @fastify/merge-json-schemas 中文文档

规范地址：https://npmcn.com/package/%40fastify/merge-json-schemas/

版本：0\.2\.2
npm 元数据更新时间：2026-10-10T10:28:36.640Z
中文译文更新时间：2026-11-14T11:05:34.374Z
软件包许可：MIT

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

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

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

- 包体积（解压后）：105 kB，54 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：1 个
- 首次发布：2024-01-16T15:39:02.284Z
- 最新版本发布：2026-10-10T10:28:36.264Z
- 近 30 天下载量：80172216（2026-10-15 至 2026-11-13，npm 官方下载统计）
- 已发布版本数：5（近 12 个月 1 个）

## 中文简介

构建多个 JSON 计划的逻辑组合( AND)

## 安装

```sh
npm install @fastify/merge-json-schemas
```

也可以使用：`pnpm add @fastify/merge-json-schemas`、`yarn add @fastify/merge-json-schemas`、`bun add @fastify/merge-json-schemas`

## README

# @ fastify/merge-json-schemas (英语)

[![CI](https://github.com/fastify/merge-json-schemas/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/fastify/merge-json-schemas/actions/workflows/ci.yml) [![npm version](https://img.shields.io/npm/v/@fastify/merge-json-schemas)](https://www.npmjs.com/package/@fastify/merge-json-schemas) [![neostandard javascript style](https://img.shields.io/badge/code_style-neostandard-brightgreen?style=flat)](https://github.com/neostandard/neostandard)

**合并- json- schemas** 是一个 JavaScript 库,用于构建逻辑产品( AND) [JSON 计划](https://json-schema.org/draft/2020-12/json-schema-core#name-introduction)。 。 。 .

-   [安装](https://npmcn.com/package/%40fastify/merge-json-schemas/#readme-installation)
-   [使用量](https://npmcn.com/package/%40fastify/merge-json-schemas/#readme-usage)
-   [API 密码](https://npmcn.com/package/%40fastify/merge-json-schemas/#readme-api)
    -   [合并计划( 计划, 选项)](https://npmcn.com/package/%40fastify/merge-json-schemas/#readme-mergeschemasschemas-options)
    -   [解析器](https://npmcn.com/package/%40fastify/merge-json-schemas/#readme-resolvers)
    -   [默认解析器](https://npmcn.com/package/%40fastify/merge-json-schemas/#readme-defaultresolver)
-   [许可证](https://npmcn.com/package/%40fastify/merge-json-schemas/#readme-license)

## 安装

```bash
npm i @fastify/merge-json-schemas
```

## 使用量

```javascript
const assert = require('node:assert')
const { mergeSchemas } = require('@fastify/merge-json-schemas');

const schema1 = {
  $id: 'schema1',
  type: 'object',
  properties: {
    foo: { type: 'string', enum: ['foo1', 'foo2'] },
    bar: { type: 'string', minLength: 3 }
  }
}

const schema2 = {
  $id: 'schema1',
  type: 'object',
  properties: {
    foo: { type: 'string', enum: ['foo1', 'foo3'] },
    bar: { type: 'string', minLength: 5 }
  },
  required: ['foo']
}

const mergedSchema = mergeSchemas([schema1, schema2])
assert.deepStrictEqual(mergedSchema, {
  $id: 'schema1',
  type: 'object',
  properties: {
    foo: { type: 'string', enum: ['foo1'] },
    bar: { type: 'string', minLength: 5 }
  },
  required: ['foo']
})
```

## API 密码

#### 合并计划( 计划, 选项)

构建多个逻辑组合( AND) [JSON 计划](https://json-schema.org/draft/2020-12/json-schema-core#name-introduction)。 。 。 .

-   `schemas` **对象 \[\]** - JSON计划合并列表
-   `options` **<对象>** - 可选选项
    -   `resolvers` **<对象>** JSON关键词的自定义解析器 每个密钥都是JSON关键词的名称. 每个值都是解析器函数. 见 [关键字解析器](https://npmcn.com/package/%40fastify/merge-json-schemas/#readme-keywordresolver-keyword-values-mergedschema-parentschemas-options)
    -   `defaultResolver` **< 函数>** JSON关键词的自定义默认解析器。 见 [关键字解析器](https://npmcn.com/package/%40fastify/merge-json-schemas/#readme-keywordresolver-keyword-values-mergedschema-parentschemas-options)
    -   `onConflict` **< 字符串>** - 发现冲突时采取的行动。 默认使用 `defaultResolver`默认为 `throw`。可能的值是:
        -   `throw` - 为同一关键字丢出多个不同的方案
        -   `ignore` - 如果找到同一关键字的多个不同的计划,则不采取任何行动
        -   `first` - 如果为同一关键词找到多个不同的方案,则使用第一个方案的价值

#### 解析器

默认解析器列表 **合并- json- schema** 用于合并JSON schemas. 您可以通过在 `options` 论点 `mergeSchemas`。见 [关键字解析器](https://npmcn.com/package/%40fastify/merge-json-schemas/#readme-keywordresolver-keyword-values-mergedschema-parentschemas-options)。 。 。 .

#### 默认解析器

默认解析器 **合并- json- schema** 用于合并JSON schemas. 当JSON关键词没有定义自定义解析器时,会使用默认解析器. 默认情况下,默认解析器工作如下:

-   如果只有一个方案包含关键词,关键词的值作为合并值
-   如果多个方案包含关键词的完全相同值,则关键词的值作为合并值
-   如果多个方案包含关键字的不同值,则会丢出错误

#### 关键词解析器( 关键词、 值、 合并的Schema、 父系统、 选项)

**合并- json- schema** 使用一组解析器将JSON schemas合并. 每个解析器都与 JSON 关键词相关. 当关键字在要合并的策略中找到时,解析器被调用. 解决者有以下论点:

-   `keyword` **< 字符串>** - 要合并的关键词名称
-   `values` **任意\[ \]** - 要合并的关键字的值。 数组的长度等于要合并的计数. 如果一个计划没有包含关键词,则数值为 `undefined`
-   `mergedSchema` **<对象>** - 合并计划的一个实例
-   `parentSchemas` **<对象\[\]>** - 母计划清单
-   `options` **<对象>** - 转到 `mergeSchemas`

解析器必须设置 `keyword` 输入 `mergedSchema` 对象.

**示例** 解析器 `minNumber` 关键词.

```javascript
function minNumberResolver (keyword, values, mergedSchema) {
  mergedSchema[keyword] = Math.min(...values)
}
```

## 许可证

许可证根据 [麻省理工学院](https://npmcn.com/package/%40fastify/merge-json-schemas/LICENSE)。 。 。 .

## 常见问题

### @fastify/merge-json-schemas 是什么？

构建多个 JSON 计划的逻辑组合\( AND\)

### 如何安装 @fastify/merge-json-schemas？

在项目目录运行 npm install @fastify/merge-json-schemas，或使用 pnpm add / yarn add / bun add。

### @fastify/merge-json-schemas 支持 TypeScript 吗？

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

### @fastify/merge-json-schemas 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @fastify/merge-json-schemas 可以商用吗？

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

### @fastify/merge-json-schemas 的下载量有多少？

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

### @fastify/merge-json-schemas 还在维护吗？

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

