@domandigital/graph

中文文档
0.7.1发布于 2026/11/02Apache-2.0TypeScriptESM + CJS零依赖构建来源已验证近 30 天下载 2716

Schema.org 实体-graph 构建者:稳定的@id词汇,节点构建者,以及一个在出船前捕获未解决的 refs并复制@ids的验证器.

中文使用文档
文档目录9 节
  1. 为什么会这样
  2. 安装
  3. 使用量
  4. 评论自己的生意赚不到钱
  5. FAQPage 页面
  6. 什么留在消费者
  7. 发展
  8. 词汇检查
  9. 版本

@ doman数字/ graph

Schema.org 多曼数字客户端网站的实体图创建者:一个稳定 @id 词汇,常见实体类型的节点构建器(Organization, WebSite,人物,地点,服务,文章,FAQPage,BreadcrumbList,项目列表, ProstCatalog)和一个未解决的验证器 @id 参考文献 复制 @id在他们出发前.

读取 原则.md 在将它接入新重播之前, 或 扩展它. 校对:Portnoy 长期合同,防止投资组合重新流动 断开的计划岛屿.

为什么会这样

在整个投资组合中,结构化数据每笔重新执行。 这个 反复出现的缺陷 : provider 编号 : worksFor 编号 : publisher 筑巢为文字 对象代替 {'@id': ...} 参考文献,所以一个页面服务与 它所属的组织在任何事物的眼里都是断开的 分析图表。 这个软件包使连接的版本成为默认版本,并且 添加检查( e)findGraphIssues),当裁判不在场时,大声地失败了 解析或两个节点相撞 @id - 两个失败模式手写 JSON -LD继续运输.

在两个结构不同的地点生产 提取 : dd-templates (多尼切模板,每个作者人物节点, /service-areas/ + 键 /blog/ 线路)和单商电工站点 (一个创始人, /electrician/ + 键 /guides/ 线路通. 都消耗这个软件包 零路由配置 - 每 @id 是根- 焦虑 (单位:千美元)${siteUrl}/#kind-slug),而不是从实体自己的页面路径来构建.

安装

pnpm add @domandigital/graph

公开在npm,Apache-2.0上,发布来源于被标记的发行. 无害环境管理和CJS共同建造船舶,每艘船舶都有自己的类型,因此在以下条件下工作: 两者 import 财务报告和审定财务报表 require。需要22.12节点或更新.

早期的版本被作为被贴在标签上的一种基特依赖被消耗. 狦琌 升级仍然这样做的还原器,替换 github:Doman-Digital/dd-graph#vX.Y.Z 具有正常分解范围的分解器. 您也可以放弃 resolve.preserveSymlinks: true 从 vitest.config.ts 若为 它被添加到这个软件包中: 它在pnpm左右工作,放一个字形 # 在 git 依赖的虚拟存储路径中, Vite 切换为 URL 碎片。 登记册安装没有 # {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}在路上 {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}所以工作是.. 现在死了.

使用量

import { createGraphIds, buildSpine, buildService, buildGraph, findGraphIssues } from "@domandigital/graph";

const ids = createGraphIds(siteUrl);

const graph = buildGraph([
  ...buildSpine(
    { name: "Acme Electrical", description: "...", url: siteUrl },
    { name: "Acme Electrical", url: siteUrl },
    ids,
    "Electrician",
  ),
  buildService({ name: "Rewiring", slug: "rewiring", url: `${siteUrl}/services/rewiring` }, ids),
]);

// In CI or a test: fail the build if the graph doesn't resolve.
const issues = findGraphIssues(graph);
if (issues.length > 0) throw new Error(issues.join("\n"));

评论自己的生意赚不到钱

审查或 aggregateRating 发表于企业的 自己的网站,是谷歌所谓的自我服务。 谷歌的音乐 审查片段指南 将组织和地方商业审查明星限制在审查地点 其他项目 企业。 标记仍然有效,谷歌说 光靠这个你就不会有手动动作。 。 。 . 所以,如果你想,就放出来描述实体, 但永远不要卖或期望 星星从它.

通过网站自己的实体来拥有 findGraphIssues 报告情况:

findGraphIssues(graph, { siteEntityId: ids.org });
// [
//   "self-serving review: aggregateRating on https://acme.example/#organization",
//   "self-serving review: Review of https://acme.example/#organization (12×)",
// ]

这些线条是用于决定的,而不是建设失败:在 self-serving review: 如果网站有意保留标记,则前缀. 无 siteEntityId 输出不变.

FAQPage 页面

buildFAQPage 已贬值。 Google 停止显示 FAQ 丰富的结果 7 May 2026 (英语). 标记仍然有效 建造者仍然工作 所以 已有的页面不需要更改,但不要添加它需要搜索功能.

渲染器 graph 作为单一 <script type="application/ld+json"> 每页. 此包件不会为它运送反射/下个组件 -- -- 排放 战略next/script 对平原 <script>)是每个地点的选择 -- -- 但是 导出时 escapeJsonLdForScript(json) 因此 CMS 作者字符串( a) 质证引用,一个FAQ回答)不能从脚本标记中突出:

import { escapeJsonLdForScript } from "@domandigital/graph";

export function JsonLdScript({ graph }: { graph: JsonLdGraph }) {
  return (
    <script
      type="application/ld+json"
      dangerouslySetInnerHTML={{ __html: escapeJsonLdForScript(JSON.stringify(graph)) }}
    />
  );
}

什么留在消费者

  • Niche/Business-type映射(如"saron")- ['BeautySalon', 'HealthAndBeautyBusiness', 'LocalBusiness']) (中文(简体) ).
  • CMS- 形状适配器( 将您的 Sanity/ CMS 文档形状映射到 OrganizationInput (见e/cn.4/sub.2/2000/l.31).
  • aggregateRating 出处/配对逻辑——是否允许你放出评分是遵守决定,而不是图形决定.
  • 实际 <script> 排放成分.

发展

pnpm install
pnpm test         # vitest
pnpm typecheck    # tsc --noEmit
pnpm build        # tsup -> dist/

CI在每一个推拉请求上都运行三个,跨越了22和24号节点.

词汇检查

src/__tests__/vocab.test.ts 用每个可选字段建立每个节点 检查每一个被发射的密钥 是一个真正的schema.org 属性 该节点的 @type 或其中一种超级类型, 相对于一个被钉住的词汇快照 (单位:千美元)src/__tests__/fixtures/schemaorg-vocab.json, schema.org 30.1 (英语). 类型脚本 无法做到这一点: 它错过了条件差内未知的密钥, 即 怎么样 PostalAddress.locality 运出而不是 addressLocality。 。 。 .

添加新内容后 @type 给一个建筑师,加进去 EMITTED_TYPES 内 scripts/snapshot-vocab.mjs 并重现快照:

pnpm run snapshot:vocab          # pinned version
node scripts/snapshot-vocab.mjs 31.0   # move the pin, then update the test's version assertion

版本

Semver, 发布到 npm 在标签推。 弹出 version 内 package.json,承诺, 然后标记( e)git tag vX.Y.Z && git push --tags) (中文(简体) ). 发布工作流程检查 标记针对 package.json 并拒绝出版 如果他们不同意,然后建造 并且通过 npm 信任的出版来发布, 所以没有 npm 令牌存储在任何地方 每一次释放都附有出处证明.

消费者使用正常的分解范围. 因为现在还是这样 0.x,一个小起落 可以携带一个类型变化,该变化作为消费者的编译错误表面,即 系统的运作情况: v0.1.0 改为 v0.1.1 无效/ 未定义的修补 在被窃听后几分钟内.

版本与发布记录

@domandigital/graph 共发布 5 个版本,首次发布于 2026/08/17;过去 12 个月发布了 5 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.7.1latest2026/11/0211 天前
0.7.02026/09/241 个月前
0.6.02026/09/231 个月前
0.5.22026/08/172 个月前
0.5.12026/08/172 个月前

关于 @domandigital/graph 的常见问题

@domandigital/graph 是什么?

Schema.org 实体-graph 构建者:稳定的@id词汇,节点构建者,以及一个在出船前捕获未解决的 refs并复制@ids的验证器.

如何安装 @domandigital/graph?

在项目目录运行 npm install @domandigital/graph,或使用 pnpm add / yarn add / bun add。

@domandigital/graph 支持 TypeScript 吗?

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

@domandigital/graph 支持 ESM 还是 CommonJS?

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

@domandigital/graph 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22.12。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@domandigital/graph 可以商用吗?

@domandigital/graph 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@domandigital/graph 的下载量有多少?

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

@domandigital/graph 还在维护吗?

最新版本 0.7.1 发布于 2026/11/02(11 天前);至今共发布 5 个版本,其中过去 12 个月发布了 5 个;首次发布于 2026/08/17。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。