# @bettercms-ai/richtext 中文文档

规范地址：https://npmcn.com/package/%40bettercms-ai/richtext/

版本：0\.19\.0
npm 元数据更新时间：2026-11-02T11:05:22.355Z
中文译文更新时间：2026-11-08T00:33:25.909Z
软件包许可：未声明

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

原始 npm 页面：https://www.npmjs.com/package/%40bettercms-ai/richtext
原文对照：https://npmcn.com/package/%40bettercms-ai/richtext/?lang=original

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

- 包体积（解压后）：3.3 MB，32 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：5 个
- 首次发布：2026-08-27T08:41:19.811Z
- 最新版本发布：2026-11-02T11:05:21.882Z
- 近 30 天下载量：3724（2026-10-08 至 2026-11-06，npm 官方下载统计）
- 已发布版本数：25（近 12 个月 25 个）

## 中文简介

BetterCMS的一个便携式文本合同:计划、转换器和渲染。 由后端,仪表板和每发货SDK共享.

## 安装

```sh
npm install @bettercms-ai/richtext
```

也可以使用：`pnpm add @bettercms-ai/richtext`、`yarn add @bettercms-ai/richtext`、`bun add @bettercms-ai/richtext`

## README

# @ bettercms-ai/ richtext (英语)

BetterCMS的一个便携式文本合同:计划、转换器和渲染。 共有 后端,仪表板, 和每一个送货SDK.

BetterCMS 在此套件之前运出四个手卷"可移植文本"树, 全部四个 与 [光谱](https://portabletext.org/) 以同样昂贵的方式:没有 `markDefs`。 。 。 . 没有标记,一个链接就无处可去, 所以每个人都可以做粗体文字 没有一个可以做超链接。 这个包裹是规格,所以是官方 `@portabletext/*` 软件包可以读取和写入我们的内容而无需shim.

## 安装

```bash
npm install @bettercms-ai/richtext
```

## 读取存储值

`toPortableText` 读取每个形状 BetterCMS曾经存储 **从不扔** - 掷出一球 这里是一个空白字段, 一个空白字段是一个自动保存 远离永久. 未识别输入返回 `[]` 并通过 `onUnreadable`。 。 。 .

```ts
import { toPortableText, portableTextToPlainText } from "@bettercms-ai/richtext";

const value = toPortableText(entry.data.body);
const preview = portableTextToPlainText(value);
```

它能处理一空 `PortableText[]`,则 `{format, value, html}` 信封, 一个 Lexical 状态 (对象或JSON字符串) `bettercms-notion-doc` 文档格式,一个预封 `{html}` 种子、 赤色 HTML 和纯文本—— 保留 **字义**,因为运行 作者通过 Markdown 解析器复制的字条是如何开始的 `#` 沉默地变成了一个方向.

## 渲染

```ts
import { portableTextToHtml } from "@bettercms-ai/richtext/html";

const html = portableTextToHtml(value);
const inline = portableTextToHtml(value, { inline: true }); // unwraps a lone <p>
```

存储是结构化数据, HTML 仅是输出, 因此作者文本永远不能 标记 : `@portabletext/to-html` 通过构建来避开文本节点。 唯一的属性 写作是 `href` 结束 `safeHref` 和与图案相匹配的阶级标志.

## 输入 HTML

```ts
import { htmlToPortableText } from "@bettercms-ai/richtext/ingest";
import { ptSchemaFor } from "@bettercms-ai/richtext";

htmlToPortableText(html, {
  parseHtml: (h) => new JSDOM(h).window.document, // required outside a browser
  schema: ptSchemaFor(["p", "h2", "link", "table"]),
});
```

**过滤器是计划.** 在计划里没有位置的标签会生成 _无节点_ —— 说 `<script>` 不是"被洗脑了", 它没有分析什么。 一个 `ptSchemaFor(accept)` 对象 驱动编辑器的工具栏,服务器的写入验证, 并同时驱动此过滤器, 所以它们 无法漂移.

## 表格

表格是它本身的块对象—— `{_type:"table", rows:[{_key, cells:[{_key, content}]}]}` —— 说 和一个牢房 **块**而不是一个弦。 因此,一个链接,一个大胆的词 或第二段在一个 单元格是普通的丰富文本,摄取者通过同一单元格摄取来保存 转换器作为周围的文档.

```ts
htmlToPortableText('<table><tbody><tr><td>Pro</td></tr></tbody></table>', { parseHtml, schema })
// → [{ _type: "table", _key: "…", rows: [{ _key: "…", cells: [{ _key: "…", content: [/* blocks */] }] }] }]
```

`header` 坐在牢房里(`<th>`, (中文(简体) ), `head` 排行数`<thead>`),以及 `span` 记录a `colspan` 没有崩溃的网格。 三者都记录下来,而不是推想得出一张表格 复制它来自的标记——财产 委托书审计 `--tables` 通过措施 每个存储的值, 以及一个表格可能转换的原因.

在此之前储存的表格——通用 `bcmsBlock` 键入 `builtin:table`,持有字符串矩阵—— 正在迁移 **读取** 以 `migrateTable`没有重写数据库; 读取器、 渲染器 简洁的文字通过 都识别出旧的形状 并返回新的形状.

## 子路径导出

| 导入 | 停车 | 用来 |
| --- | --- | --- |
| `@bettercms-ai/richtext` | 无重 | 类型、方案、阅读、纯文本 |
| `@bettercms-ai/richtext/html` | hTML 序列器 | 渲染 |
| `@bettercms-ai/richtext/ingest` | a DOM 解析器 | HTML → 可移植文本 |

分裂是故意的: `ingest` 需要一个DOM和 `html` 需要连载器,也没有 应该是因为有人输入了一种类型 才到达仪表盘包的.

## 船舶作为来源

`main` 点数 `./src/index.ts`一样 `@bettercms-ai/db` 财务报告和审定财务报表 `@bettercms-ai/content`编辑 更好的CMS API 运行 Bun 并直接消耗; a `dist`\- 指向崩溃后导出 集装箱。 需要编译产出的消费者应将其捆绑起来,因为他们 TypeScript 源依赖 .

## 许可证

专有——BetterCMS的一部分.

## 常见问题

### @bettercms-ai/richtext 是什么？

BetterCMS的一个便携式文本合同:计划、转换器和渲染。 由后端,仪表板和每发货SDK共享\.

### 如何安装 @bettercms-ai/richtext？

在项目目录运行 npm install @bettercms-ai/richtext，或使用 pnpm add / yarn add / bun add。

### @bettercms-ai/richtext 支持 TypeScript 吗？

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

### @bettercms-ai/richtext 支持 ESM 还是 CommonJS？

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

### @bettercms-ai/richtext 可以商用吗？

@bettercms-ai/richtext 使用 未声明 许可。package\.json 没有声明许可证。没有许可证的代码默认保留全部权利，商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括，不构成法律意见，请以许可原文为准。

### @bettercms-ai/richtext 的下载量有多少？

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

### @bettercms-ai/richtext 还在维护吗？

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

