@fastify/merge-json-schemas

中文文档
0.2.2发布于 2026/10/10MITTypeScriptCommonJS构建来源已验证近 30 天下载 8017.2万

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

中文使用文档
文档目录4 节
  1. 安装
  2. 使用量
  3. API 密码
  4. 许可证

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

CI npm version neostandard javascript style

合并- json- schemas 是一个 JavaScript 库,用于构建逻辑产品( AND) JSON 计划。 。 。 .

安装

npm i @fastify/merge-json-schemas

使用量

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 计划。 。 。 .

  • schemas 对象 [] - JSON计划合并列表
  • options <对象> - 可选选项
    • resolvers <对象> JSON关键词的自定义解析器 每个密钥都是JSON关键词的名称. 每个值都是解析器函数. 见 关键字解析器
    • defaultResolver < 函数> JSON关键词的自定义默认解析器。 见 关键字解析器
    • onConflict < 字符串> - 发现冲突时采取的行动。 默认使用 defaultResolver默认为 throw。可能的值是:
      • throw - 为同一关键字丢出多个不同的方案
      • ignore - 如果找到同一关键字的多个不同的计划,则不采取任何行动
      • first - 如果为同一关键词找到多个不同的方案,则使用第一个方案的价值

解析器

默认解析器列表 合并- json- schema 用于合并JSON schemas. 您可以通过在 options 论点 mergeSchemas。见 关键字解析器。 。 。 .

默认解析器

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

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

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

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

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

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

示例 解析器 minNumber 关键词.

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

许可证

许可证根据 麻省理工学院。 。 。 .

版本与发布记录

@fastify/merge-json-schemas 共发布 5 个版本,首次发布于 2024/01/16;过去 12 个月发布了 1 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.2.2latest2026/10/101 个月前
0.2.12025/01/071.9 年前
0.2.02024/09/042 年前
0.1.12024/01/162 年前
0.1.02024/01/162 年前

关于 @fastify/merge-json-schemas 的常见问题

@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 和提交记录判断。