用途:把外部内容(HTML、Markdown)转换为 Sanity 使用的 Portable Text(PT)。适合从旧 CMS 迁移内容、将 HTML 或 Markdown 导入 Sanity,以及从 API、数据库等来源程序化构建 PT 块。
三种主要方式:
- markdownToPortableText:使用 @portabletext/markdown 直接转换 Markdown(Markdown 场景推荐)。
- htmlToBlocks:使用 @portabletext/block-tools 将 HTML 解析为 PT 块(HTML 迁移场景)。
- 手动构建:从任意来源(API、数据库等)直接构造 PT 块。
目标格式要点:PT 是块数组。文本块 _type 为 "block",自定义类型使用各自的 _type。每个块与 span 都需要在数组内唯一的 _key。span 带有 text 与 marks;markDefs 保存注解数据,span 上的 marks 可引用 markDefs[*]._key 或使用修饰符字符串。列表通过普通块上的 listItem("bullet" | "number")和 level(1、2、3…)表示。图片等非文本块使用自定义 _type 与 asset 引用。
使用方式:根据来源格式阅读对应规则文件——Markdown 转 PT 见 rules/markdown-to-pt.md(@portabletext/markdown 的 markdownToPortableText,推荐);HTML 转 PT 见 rules/html-to-pt.md(@portabletext/block-tools 的 htmlToBlocks);手动构建见 rules/manual-construction.md。注意 @sanity/block-tools 是旧包名,新项目应始终使用 @portabletext/block-tools,两者 API 相同。
限制与其它信息:未提供具体收费、价格、平台兼容性与效果保证,暂未提供。转换过程中需自行确保 _key 唯一,并按目标 schema 处理自定义块类型。