# @eraserlabs/resolve 中文文档

规范地址：https://npmcn.com/package/%40eraserlabs/resolve/

版本：0\.5\.2
npm 元数据更新时间：2026-11-11T18:26:43.435Z
中文译文更新时间：2026-11-13T20:26:27.964Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40eraserlabs/resolve
原文对照：https://npmcn.com/package/%40eraserlabs/resolve/?lang=original
项目主页：https://github.com/eraserlabs/eraser-diagrams
源码仓库：https://github.com/eraserlabs/eraser-diagrams

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

- 包体积（解压后）：163 kB，77 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：^22\.23\.4 \|\| ^24\.22\.1 \|\| \>=26\.12\.1
- 运行依赖：8 个
- 首次发布：2026-08-19T03:41:58.568Z
- 最新版本发布：2026-11-11T18:26:42.982Z
- 近 30 天下载量：10683（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：11（近 12 个月 11 个）

## 中文简介

纯擦除器解析引擎

## 安装

```sh
npm install @eraserlabs/resolve
```

也可以使用：`pnpm add @eraserlabs/resolve`、`yarn add @eraserlabs/resolve`、`bun add @eraserlabs/resolve`

## README

# @ eraserlabs/ 解析

## 导言

`@eraserlabs/resolve` 将作者的图表文档转换成完全解析的元素数据。 它根据模板库验证标记,应用衍生的道具规范化器,对文本进行消毒,内含图标,并发出分割 `{ entities, connections }` 有效载荷 `@eraserlabs/render`。没有自己的服务器、文件系统或网络:呼叫者注入图标加载和类似的I/O.

它拥有作者输入语法. 文档是一个对象信封—— 也可以 `{ elements }` 或分割 `{ entities, connections }` 需要两个键。 拒绝一个赤裸的JSON阵列(`E_ENVELOPE`) 被授权类型脚本形状(`AuthoredEntity`, (中文(简体) ), `AuthoredConnection`, (中文(简体) ), `DiagramInput`从此包中导出; `@eraserlabs/protocol` 拥有已解决的合同.

所有被写入的维度在解析过程中被四舍五入到最近的整数:每个元素的 `x`编号 :`y`编号 :`width`编号 :`height`,每个连接方式 `points`,则 `labelPlacement` 框中输入。 布局引擎在整数网格上工作,因此分数坐标(从app输出出浮出尘来或被测量出来回行走)是被能动化而不是被携带.

## 为什么

分辨率必须在节点运行,在CLI运行,在浏览器游乐场运行,结果相同. 将它与铬或一个框架相接会迫使每个消费者接受这种依赖。 失败的图书库或模板检查 `createResolver`,所以没有解析器存在于引擎尚未证明可以运行的词汇上.

## 使用量

```ts
import { createResolver } from '@eraserlabs/resolve';
import { stockLibrary } from '@eraserlabs/diagram-templates';
import { stockNormalizers } from '@eraserlabs/diagram-templates/normalizers';

const resolver = await createResolver({
  library: stockLibrary,
  normalizers: stockNormalizers,
});

const result = await resolver.resolve({
  entities: [
    { tag: 'Shape', id: 'a', x: 0, y: 0 },
    { tag: 'Shape', id: 'b', x: 200, y: 0 },
  ],
  connections: [{ from: 'a', to: 'b' }],
});
```

`createResolver` 编译了一次库. `resolve` 返回时 `{ ok, entities, connections, icons, warnings, errors }`· ; `validate` 运行同一管道而不内置图标字节。 供应 `iconLoader` 以名称获取 SVG; `onUnknownIcon` 实值 `'placeholder'` 或者说 `'error'`。装入的SVG通过一个允许列表 sanitizer,通过浏览器的HTML规则来解析:静态绘图元素和仅本地引用. 任何其它的都拒绝这个图标,它就落在下面 `onUnknownIcon`,但编辑器元数据除外(Inkscape/Sodipodi, `<metadata>`,额外命名空间声明),过滤效果,以及许可列表外的样式属性,这些属性被删除.

可移植文件、组件、字体和模拟合同 `@eraserlabs/protocol`。兼容性再出口保持在 `@eraserlabs/resolve/schema`。组件作者在 [计算机化.md](https://npmcn.com/package/CUSTOMIZATION.md)。 。 。 .

## 子集和同步解析

`resolve(input, { partial: true })` 财务报告和审定财务报表 `validate(input, { partial: true })` 允许引用省略元素。 Schema出错,重复的ID,包括错误的目标,封存周期仍然是出错. 默认呼叫严格;部分结果不会提供缺失的路由几何.

`resolveForLayout(input, options?)` 返回与占位符图标同步,而不加载图标或检查其存在。 所有其他解决阶段都是共同的。 它支持在模板给出真实和占位符图标相同界限时在资产加载前进行测量.

## 主题和内部油漆

过 `{ theme: 'dark' }` 用于任何一种解析方法。 调色板的外观和常态器首先运行,然后每个被宣布的图案颜色会一次被改变,包括巢色和内色. 授权输入保持不变 。 渲染器自动应用由此产生的主题元数据;改变主题需要再次解析原始输入.

常态器计算出光-空涂. 宣布2003年新的内部产出 `library.renderProps`,比如说. `renderProps: { Card: { fillColor: CssColor } }`。这些授权模板绑定和规范化后的内容/颜色政策,而无需在撰写计划中出现。 在正常化前,对已提交的内部田地进行警告并剥离。 名称不能与作者字段相重叠; 派生颜色使用 `CssColor`没有 `PaletteColor`。规范化器本身具有结构有效性;使声明不适用默认或重复全面计划验证.

自定义 CSS 需要主题意识默认; 股票 CSS 提供 `--er-text`, (中文(简体) ), `--er-surface`, (中文(简体) ), `--er-line`,以及代码/语法符号。 固定颜色的艺术品没有变化. `currentColor` 保留继承; 使用混凝土颜色来保存锡的转换.

## 图表标记

块文本支持段落,标题(被封为第三级),平面列表,简单的引文,规则,出击,和有栅栏的代码. 标签使用内线 Markdown. 被嵌入的块,表格,图像,和生的HTML在演示文稿合同之外;生的HTML被逃脱. 这些规则也影响到现有的文件.

Prose新行画出分行符;空白行会分出段落. 保留了附加和后行的空行 。 四相相相入入入入还作是道相. 被标记的手柄有代码的跨度和链接;被栅栏的代码保存了内部的白空间并包裹了长的符号. 可选 `highlightCode` 返回必须准确复制输入的文本/类运行;失败返回到普通代码.

## 常见问题

### @eraserlabs/resolve 是什么？

纯擦除器解析引擎

### 如何安装 @eraserlabs/resolve？

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

### @eraserlabs/resolve 支持 TypeScript 吗？

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

### @eraserlabs/resolve 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @eraserlabs/resolve 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js ^22\.23\.4 \|\| ^24\.22\.1 \|\| \>=26\.12\.1。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @eraserlabs/resolve 可以商用吗？

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

### @eraserlabs/resolve 的下载量有多少？

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

### @eraserlabs/resolve 还在维护吗？

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

