@expo/schemer

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

世博会中央计划验证库

中文使用文档
文档目录6 节
  1. 使用量
  2. 使用 XDL
  3. 只有外观验证
  4. 验证财产
  5. 说明
  6. API 密码

欢迎光临
@expo/schemer

一个用于博览会的Schema验证库.

详情如下:

使用量

使用 XDL

import { getConfig } from '@expo/config';
import Schemer from '@expo/schemer';

const { exp } = getConfig(projectRoot);
const schema = await getSchemaAsync(exp.sdkVersion);
const validator = new Schemer(require('schema.json'));

validator.validateName('Wilson Zhao');
validator.validateAssets(exp);

只有外观验证

const validator = new Schemer(require('schema.json'));
try {
  await validator.validateSchemaAsync(require('data.json'));
} catch (e) {
  console.error(e);
}

验证财产

const validator = new Schemer(require('schema.json'));
await validator.validateName('Wilson Zhao');

说明

谋划者使用自定义的 JSON Schema 来验证各种数据.

在引擎盖下,它使用Ajv(https://github.com/epoberezkin/ajv (英语))作为基础schema验证的Javascript引擎. 然而,每个子schema也包含自定义元标记,可以被解析以进一步"人工"验证. 目前,计划员支持对资产进行人工验证:

{
  meta:
  {
    asset,
    contentType, //mime type
    dimensions: {width, height},
    square,

    // For custom error messages and docs
    regexHuman,
    autogenerated,
    notHuman
  }
}

所有错误均可在 this.errors,该函数将 Ajv JSON Schema 错误和自定义元/资产验证错误合并成一个统一的数组 ValidationErrors。 。 。 . 如果存在错误,则在每个公交功能的末尾投出错误.

所有的公交功能都是同源函数,因为资产验证必须是同源函数(访问文件系统或提出网络请求).

API 密码

新方案人( Object JSON Schema, Object 选项) - > 对象

.validateSchemaAsync(对象数据) - > 答应

返回一个决心 true 如果数据符合计划。 否则,它拒绝并扔出一系列 ValidationError编号.

.validate AssetsAsync(对象数据) - > 答应

返回一个决心 true 如果数据符合在每个元标记中发现的额外验证步骤。 例如,它会下载一个资产并读取文件头来查看它是否属于某个内容类型. 否则,它拒绝并扔出一系列 ValidationError编号.

.validate All(对象数据) - > 答应

运行两者 .validateSchemaAsync 财务报告和审定财务报表 .validateAssetsAsync。 。 。 . 返回一个决心 true 如果数据通过两个函数。 否则,它拒绝并扔出一系列 ValidationError编号.

.validate Property(平面平面,对象数据) - > 答应

提取给定字段路径的子Schema并对照它验证数据。 同时检查元标记. 返回一个决心 true 如果数据符合子schema。 否则,它拒绝并扔出一系列 ValidationError编号.

错误

包含一组验证错误

新验证 Error ({errorCode, 字段Path, 消息, 数据, meta}) - > 对象

版本与发布记录

@expo/schemer 共发布 260 个版本,首次发布于 2017/07/14;过去 12 个月发布了 69 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
2.4.3latest2026/10/3113 天前
2.4.22026/10/1728 天前
2.4.12026/09/291 个月前
2.4.02026/09/112 个月前
3.0.0-canary-20260909-ea7a89acanary2026/09/092 个月前
3.0.0-canary-20260902-26df09e2026/09/022 个月前

其他发布通道:alpha → 1.3.27-alpha.0,sdk-50 → 1.5.0,sdk-51 → 1.5.2,canary-sdk-55 → 2.1.5-canary-20260429-a5e59cf,canary-sdk-56 → 2.2.2-canary-20260701-9100865,canary → 3.0.0-canary-20260909-ea7a89a。

关于 @expo/schemer 的常见问题

@expo/schemer 是什么?

世博会中央计划验证库

如何安装 @expo/schemer?

在项目目录运行 npm install @expo/schemer,或使用 pnpm add / yarn add / bun add。

@expo/schemer 支持 TypeScript 吗?

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

@expo/schemer 支持 ESM 还是 CommonJS?

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

@expo/schemer 可以商用吗?

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

@expo/schemer 的下载量有多少?

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

@expo/schemer 还在维护吗?

最新版本 2.4.3 发布于 2026/10/31(13 天前);至今共发布 260 个版本,其中过去 12 个月发布了 69 个;首次发布于 2017/07/14。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。