@eggjs/ajv-formats

中文文档
3.0.1发布于 2024/04/07MITTypeScriptCommonJS近 30 天下载 4146

Ajv v7+ 的格式验证

中文使用文档
文档目录6 节
  1. 使用量
  2. 格式
  3. 用于比较数值的关键字 : formatMaximum 编号 : formatMinimum 财务报告和审定财务报表 f…
  4. 选项
  5. 测试
  6. 许可证

ajv 格式

防御: 删除 peerDependencies 让它依靠蛋蛋.

Ajv 的 JSON Schema 格式

Build Status npm Gitter GitHub Sponsors

使用量

// ESM/TypeScript import
import Ajv from "ajv"
import addFormats from "ajv-formats"
// Node.js require:
const Ajv = require("ajv")
const addFormats = require("ajv-formats")

const ajv = new Ajv()
addFormats(ajv)

格式

软件包定义了这些格式:

参见用于格式验证的正则表达式和用于格式验证的源 格式.ts 类型。 。 。 .

请注意: JSON Schema 草案07 也定义了格式 iri, (中文(简体) ), iri-reference, (中文(简体) ), idn-hostname 财务报告和审定财务报表 idn-email 用于URL、主机名和带有国际字符的电子邮件。 这些格式可用于 ajv-formats-草案2019 插件 .

用于比较数值的关键字 : formatMaximum 编号 : formatMinimum 财务报告和审定财务报表 formatExclusiveMaximum 编号 : formatExclusiveMinimum

当格式关键词定义命令时,这些关键词可以定义最小/最大限制(compare 函数在格式定义中).

这些关键字添加到 ajv 实例中, 当 ajv 格式用于没有选项或带有选项时 keywords: true。 。 。 .

这些关键字仅适用于字符串. 如果数据不是字符串,则验证成功.

关键词的值 formatMaximum编号 :formatMinimum 财务报告和审定财务报表 formatExclusiveMaximum编号 :formatExclusiveMinimum 应该是一个字符串或 数据参考。这个值是允许数据有效的最大(最小)值,由 format 关键词 若为 format 关键词不为当前计划编译将丢出例外 .

当这些关键字被添加时,它们也会在格式中添加比较功能 "date", (中文(简体) ), "time" 财务报告和审定财务报表 "date-time"。用户定义的格式也可以有比较功能。 见 添加格式 方法.

require("ajv-formats")(ajv)

const schema = {
  type: "string",
  format: "date",
  formatMinimum: "2016-02-06",
  formatExclusiveMaximum: "2016-12-27",
}

const validDataList = ["2016-02-06", "2016-12-26"]

const invalidDataList = ["2016-02-05", "2016-12-27", "abc"]

选项

选项可以通过第二个参数传递. 选项值可以是

  1. 添加到 ajv 实例中的格式名称列表 :
addFormats(ajv, ["date", "time"])

请注意: 当 ajv 遇到未定义的格式时, 它会丢出例外( 除非 ajv 实例被配置到 strict: false 选项)。 为了允许特定的未定义格式,它们必须通过 ajv 实例传递给 formats 选项 true 值 :

const ajv = new Ajv({formats: {date: true, time: true}}) // to ignore "date" and "time" formats in schemas.
  1. 格式验证模式( 默认为 "full"),可选的格式名称列表和 keywords 选项以添加其他格式比较关键字:
addFormats(ajv, {mode: "fast"})

或者说

addFormats(ajv, {mode: "fast", formats: ["date", "time"], keywords: true})

单位 "fast" 以下格式被简化: "date", (中文(简体) ), "time", (中文(简体) ), "date-time", (中文(简体) ), "iso-time", (中文(简体) ), "iso-date-time", (中文(简体) ), "uri", (中文(简体) ), "uri-reference", (中文(简体) ), "email"。例如, "date", (中文(简体) ), "time" 财务报告和审定财务报表 "date-time" 不验证区域 "fast" 模式,只有字符串结构,以及其他格式有简化正则表达式.

测试

npm install
git submodule update --init
npm test

许可证

麻省理工学院

版本与发布记录

@eggjs/ajv-formats 共发布 1 个版本,首次发布于 2024/04/07;过去 12 个月发布了 0 个版本。

版本发布日期距今
3.0.1latest2024/04/072 年前

关于 @eggjs/ajv-formats 的常见问题

@eggjs/ajv-formats 是什么?

Ajv v7+ 的格式验证

如何安装 @eggjs/ajv-formats?

在项目目录运行 npm install @eggjs/ajv-formats,或使用 pnpm add / yarn add / bun add。

@eggjs/ajv-formats 支持 TypeScript 吗?

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

@eggjs/ajv-formats 支持 ESM 还是 CommonJS?

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

@eggjs/ajv-formats 可以商用吗?

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

@eggjs/ajv-formats 的下载量有多少?

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

@eggjs/ajv-formats 还在维护吗?

最新版本 3.0.1 发布于 2024/04/07(2 年前);至今共发布 1 个版本,其中过去 12 个月发布了 0 个;首次发布于 2024/04/07。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。