@bettercms-ai/richtext

中文文档
0.19.0发布于 2026/11/02TypeScriptESM + CJS近 30 天下载 3724

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

中文使用文档
文档目录8 节
  1. 安装
  2. 读取存储值
  3. 渲染
  4. 输入 HTML
  5. 表格
  6. 子路径导出
  7. 船舶作为来源
  8. 许可证

@ bettercms-ai/ richtext (英语)

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

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

安装

npm install @bettercms-ai/richtext

读取存储值

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

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 解析器复制的字条是如何开始的 # 沉默地变成了一个方向.

渲染

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

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}]}]} —— 说 和一个牢房 块而不是一个弦。 因此,一个链接,一个大胆的词 或第二段在一个 单元格是普通的丰富文本,摄取者通过同一单元格摄取来保存 转换器作为周围的文档.

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/htmlhTML 序列器渲染
@bettercms-ai/richtext/ingesta 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 共发布 25 个版本,首次发布于 2026/08/27;过去 12 个月发布了 25 个版本。

版本发布日期距今
0.19.0latest2026/11/026 天前
0.18.02026/10/318 天前
0.17.22026/10/2613 天前
0.17.12026/10/2513 天前
0.17.02026/10/2415 天前
0.13.02026/10/2415 天前

关于 @bettercms-ai/richtext 的常见问题

@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 和提交记录判断。