# @ephox/boulder 中文文档

规范地址：https://npmcn.com/package/%40ephox/boulder/

版本：9\.0\.0
npm 元数据更新时间：2026-03-31T04:20:37.428Z
中文译文更新时间：2026-11-13T19:32:46.155Z
软件包许可：GPL-2\.0-or-later

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

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

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

- 包体积（解压后）：222 kB，109 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：1 个
- 首次发布：2017-09-20T01:11:08.034Z
- 最新版本发布：2026-03-31T04:20:37.308Z
- 近 30 天下载量：4005（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：79（近 12 个月 1 个）

## 中文简介

基本的 Javascript 对象验证

## 安装

```sh
npm install @ephox/boulder
```

也可以使用：`pnpm add @ephox/boulder`、`yarn add @ephox/boulder`、`bun add @ephox/boulder`

## README

# 说明

`Boulder` 是一个旨在为验证 JavaScript 对象提供良好语法的项目。 它的目的是当开发者没有正确指定对象时提供有用的反馈. 其另一个目的是明智地处理默认的辩词和可选辩词.

被巨石所暴露的API会不断改变,但它应该始终基于 `structure` 财务报告和审定财务报表 `field` 计划. `Structure` 用于代表一个完整的结构 `field`s(如编号,数组,对象等). `Field` 用于代表一个单字段 `object` (例如:. `object.alpha`) (中文(简体) ). 通过结合他们, `boulder` 应当能够指明具有合理复杂性的物体.

# 安装

`boulder` 可作为 `npm` 软件包。 您可以通过 npm 软件包安装 `@ephox/boulder`

## 从 npm 安装

`npm install @ephox/boulder`

# 使用量

## 运行测试

`boulder` 用途 [`bedrock`](https://www.npmjs.com/package/@ephox/bedrock) 进行测试。 测试通过 `test` 项目中的脚本. 具体来说,

`$ yarn test`

## 巨头 API

`ephox.boulder.api.StructureSchema`

-   [`valueOf :: (JsObj -> Result) -> StructureProcessor`](https://npmcn.com/package/%40ephox/boulder/#readme-valueOf)
    
-   [`arrOf :: (StructureProcessor) -> StructureProcessor`](https://npmcn.com/package/%40ephox/boulder/#readme-arrOf)
    
-   [`objOf :: ([ FieldSchema ]) -> StructureProcessor`](https://npmcn.com/package/%40ephox/boulder/#readme-objOf)
    
-   [`setOf :: (JsObj -> Result, StructureProcessor) -> StructureProcessor`](https://npmcn.com/package/%40ephox/boulder/#readme-setOf)
    
-   [`thunkOf :: (String, () -> StructureProcessor) -> StructureProcessor`](https://npmcn.com/package/%40ephox/boulder/#readme-thunkOf)
    
-   [`funcOrDie :: (Array, () -> StructureProcessor) -> StructureProcessor`](https://npmcn.com/package/%40ephox/boulder/#readme-funcOrDie)
    
-   [`asRaw :: (String, StructureProcessor, JsObj) -> Result (JsObj)`](https://npmcn.com/package/%40ephox/boulder/#readme-asRaw)
    

`ephox.boulder.api.FieldSchema`

-   [`field :: (String, String, Presence, StructureProcessor) -> FieldSchema`](https://npmcn.com/package/%40ephox/boulder/#readme-field)
-   [`customField :: (String, (JsObj -> JsObj)) -> FieldSchema`](https://npmcn.com/package/%40ephox/boulder/#readme-customField)

`ephox.boulder.api.ValueType`

-   [`anyValue :: () -> StructureProcessor`](https://npmcn.com/package/%40ephox/boulder/#readme-anyValue)
-   [`number :: () -> StructureProcessor`](https://npmcn.com/package/%40ephox/boulder/#readme-number)
-   [`string :: () -> StructureProcessor`](https://npmcn.com/package/%40ephox/boulder/#readme-string)
-   [`boolean :: () -> StructureProcessor`](https://npmcn.com/package/%40ephox/boulder/#readme-boolean)
-   [`func :: () -> StructureProcessor`](https://npmcn.com/package/%40ephox/boulder/#readme-func)
-   [`postMessageable :: () -> StructureProcessor`](https://npmcn.com/package/%40ephox/boulder/#readme-postMessageable)

注意,还有许多其他的API,但它们往往是在这些构造器上建起的便利功能.

### 结构Schema.valueOf(验证器)

-   用于对任何值(阵列、对象、数字等)提供验证。 所传递的论点是 `validator`,它将把值当作参数并返回 `Result.value` 如果允许 `Result.error` 如果它不应该. `Result` 是一个数据类型,由 [`katamari`](https://www.npmjs.com/package/@ephox/katamari)。 。 。 .

### 结构化学式( schema)

-   用于表示该值是数组中每个项目匹配的数组 `schema`。 。 。 .

### 结构Schema.objOf(外地计划)

-   用于表示一个有匹配字段的对象 `fieldSchemas`。注意,对象可以有更多的字段,这些字段定义在 schema 中,如果一些字段是 `defaulted` 或者说 `optional`,可能没有必要.

### 结构Schema.setOF(验证器,计划)

-   用于表示字段匹配一些对象 `validator`但你不知道他们的确切姓名 这个 `schema` 用于匹配每个字段的值。 对于一个服务器可能用一个对象进行响应的相位图来说,这是有用的,每个密钥匹配一些其他的ID,并且事先并不为人所知.

### 结构Schema.thunkOf(描述, schemathunk)

-   用于表示可以动态计算出的图案. 这对于一个孩子字段需要以与其母字段(如树)相同的处理方式进行处理的递归性计划是有用的. 这个 `description` 用于简单描述这个计划代表什么,因为在计算DSL时试图引用它可以引起无限循环. 这个 `schemaThunk` 函数不需要参数,返回 `StructureSchema` 用来使用.

### 结构Schema.thunkOf(参数, schemaBacon)

-   (原始内容存档于2018-09-21) (中文(简体) ). Bacon Experum dolor amet flat (简体). Mignon Beak shankle ham chock. 肉丸子T骨肉豆蔻多尔乔尔 威尼生香肠舌头多吃点心 (原始内容存档于2018-03-27). Shankle ribeye alcatra 三尖地起跑. T-bone kielbasa (英语) `pork belly` 花排米尼干肉卷 沙尔洛因地 玉米牛肉 猪肉卷 猪肚花花花花花花花 鸡肉花花花 `bacon`里贝耶短腰肉 面条猪排 `filet mignon` (原始内容存档于2019-10-12). campistick t-bone picanha.

### 结构Schema.asStruct(标签、 schema、 obj)

-   带一个 `schema` 对于对象和对象(`obj`,并返回 \[_结构_(https://www.npmjs.com/package/@ephox/katamari) 版本中的此天体在 a `Result.value` 如果它符合计划。 不匹配的,请返回 `Result.error` 与验证错误。 构造只是每个属性被一个存取器函数所包裹的对象.

### 结构Schema.asRaw(标签、 schema、 obj)

-   带一个 `schema` 对于对象和对象(`obj`中返回对象的简单版本 `Result.value` 如果它符合计划。 不匹配的,请返回 `Result.error` 与验证错误。 此输出不会是 _结构_。 。 。 .

### FieldSchema.field(钥匙、新钥匙、存在、计划)

-   定义对象设计的字段。 出席情况`required` | `defaulted` | `asOption` | `asDefaultedOption`)用于确定如何处理字段是否 `key` 在那里,还有 `schema` 定义与字段值相匹配的策略。 在输出对象中, `newKey` 将用作字段名称。 注意,这种方法有许多方便方法,例如: `FieldSchema.required('key')`。 。 。 .

### FieldSchema. Custom Field(新基,即时器)

-   定义对象的生成输出字段。 这没有计划要求,但可用于取取原始对象的快照,或为每个取出对象的版本创建某种状态,或进行自定义处理.

### 任何数值

-   用于表示任何值(阵列、对象、数字等).

### 值类型. 个数

-   用于表示数字

### 值类型.字符串

-   用于表示字符串

### 数值 Type.boole

-   用于代表布尔

### 数值Type.func

-   用于表示函数

### 价值类型. post 可删除

-   用于表示结构上的值,以便通过Message后发送

## 常见问题

### @ephox/boulder 是什么？

基本的 Javascript 对象验证

### 如何安装 @ephox/boulder？

在项目目录运行 npm install @ephox/boulder，或使用 pnpm add / yarn add / bun add。

### @ephox/boulder 支持 TypeScript 吗？

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

### @ephox/boulder 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @ephox/boulder 可以商用吗？

@ephox/boulder 使用 GPL-2\.0-or-later 许可。强 Copyleft：分发包含该代码的软件时，整个作品需以兼容的 GPL 许可开源。仅在内部使用、不对外分发时不触发此义务。以上为概括，不构成法律意见，请以许可原文为准。

### @ephox/boulder 的下载量有多少？

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

### @ephox/boulder 还在维护吗？

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

