@contentful/content-source-maps

中文文档
0.12.3发布于 2026/07/30MITTypeScriptESM + CJS近 30 天下载 526.1万

用于构建内容源地图的 SDK 基础

中文使用文档
文档目录7 节
  1. 安装
  2. 如何运作
  3. 图QL
  4. 内容预览 API (REST)
  5. 合并 Live 更新内容和内容源地图
  6. 解决问题/ 小费
  7. 限制

⚠️ 我们的Premium计划中只有内容源图。 Vercel Content Links只在Vercel Pro和企业计划中提供.

内容来源地图

  • 自动在短文本,丰富文本和资产等可视字段中添加督察模式,取消人工插入数据属性所需的时间和努力.
  • 允许与 Vercel 的内容链接 特性,增强可用性与合作.

安装

安装 Live 预览 SDK :

npm install @contentful/live-preview

如何运作

这个过程使用素描法将元数据隐藏在无形的Unicode字符中,包含信息来激活检查器模式. 这些看不见的Unicode字符不会改变您内容的视觉展示.

图QL

1. 启动现场预览SDK

此步骤仅用于Live Preview Introduction Mode(而不是Vercel内容链接).

import { ContentfulLivePreviewProvider } from '@contentful/live-preview/react';

const CustomApp = ({ Component, pageProps }) => (
  <ContentfulLivePreviewProvider locale="en-US">
    <Component {...pageProps}>
  </ContentfulLivePreviewProvider>
)

2. 设置图表QL查询

在您的 GraphQL 查询中启用内容源地图如下 :

query @contentSourceMaps {
  postCollection(preview: true) {
    items {
      title
    }
  }
}

GraphQL API 现在将连同内容源地图一起返回数据 extensions 字段.

3. 处理图QL回复

然后,将数据传递给提供的函数 encodeGraphQLResponse 以编码响应:

import { encodeGraphQLResponse } from '@contentful/live-preview';

const dataWithAutoTagging = encodeGraphQLResponse(data);

在您网站上提供编码数据时, 检查员模式将自动激活 .

内容预览 API (REST)

1. 启动现场预览SDK

此步骤仅用于Live Preview Introduction Mode(而不是Vercel内容链接).

import { ContentfulLivePreviewProvider } from '@contentful/live-preview/react';

const CustomApp = ({ Component, pageProps }) => (
  <ContentfulLivePreviewProvider locale="en-US">
    <Component {...pageProps}>
  </ContentfulLivePreviewProvider>
)

2. 启用《全面和平协议》的内容源图

启用使用 内容客户端 SDK,简单启用 includeContentSourceMaps 在客户端中:

export const clientPreview = createClient({
  space: process.env.CONTENTFUL_SPACE_ID!,
  accessToken: process.env.CONTENTFUL_PREVIEW_ACCESS_TOKEN!,
  host: "preview.contentful.com",
  alphaFeatures: {
    includeContentSourceMaps: true
  }
});

检查器模式将自动激活 。 请确保使用 Contentful.js v10.11.0 或以上版本.

在不使用JS客户SDK时:直接使用CPA

请注意,如果没有内容丰富的客户端 SDK, 某些保护, 如自动请求所需的 sys.id未执行。 为确保内容源图正常运行,完整 sys 对象需要检索。 因此,使用a 选择 操作员将此排除在答复之外会造成错误.

添加 &includeContentSourceMaps=true 转到 URL

fetch("https://preview.contentful.com/spaces/:spaceId/environments/:envId/entries&includeContentSourceMaps=true",
 {
   method: "GET",
   headers: {
     Authorization: "Bearer YOUR_ACCESS_TOKEN",
     Content-Type: "application/json",
   },
 }
)

使用 encodeCPAResponse 函数来自 Live 预览 SDK,通过它通过带有内容源地图的 CPA 响应。 它会带着您的内容返回, 其中包括隐藏的元数据, 以启用检查器模式 .

import { encodeCPAResponse } from '@contentful/live-preview';

const dataWithAutoTagging = encodeCPAResponse(data);

合并 Live 更新内容和内容源地图

如果您正在使用包含内容源地图的实时更新和检查模式,那么将编码结果传递到 useContentfulLiveUpdates。 。 。 .

import { encodeGraphQLResponse } from '@contentful/live-preview';
import { useContentfulLiveUpdates } from '@contentful/live-preview/react';

export default function Page({ initialGraphQLResponse }) {
  // 1. Encode the full response first (including extensions):
  const encoded = encodeGraphQLResponse(initialGraphQLResponse);
  // 2. Then pass that encoded data to the live updates hook:
  const updated = useContentfulLiveUpdates(encoded);

  return <h1>{updated.data?.myEntry?.title}</h1>;
}

解决问题/ 小费

  • 在某些情况下,例如在CSS中应用字母间距时,字段可能显示并非有意的样式. 在这种情况下,您可以使用 splitEncoding 函数由 Live 预览 SDK 提供,用于检索内容并删除任何隐藏的元数据.

    import { splitEncoding } from '@contentful/live-preview';
    
    const { cleaned, encoded } = splitEncoding(text);
    
  • 如果您提供了资产标题或描述的备选案文属性, 图像会自动被标记 .

  • 要停止使用手动标记, 请使用内容源地图 :

    <ContentfulLivePreviewProvider experimental={{ ignoreManuallyTaggedElements: true }} />
    
  • 对于使用@apollo/客户端,需要一个自定义链接来添加扩展以转发解析到响应中. 示例

限制

  • Markdown支持目前正在开发中.
  • 将隐藏的元数据添加到内容中会造成问题,例如用于CSS值,日期或URL内容时. 您可以使用 splitEncoding 函数来自 Live 预览 SDK.
  • 在这些格式上将跳过编码 :
    • 不使用英文字母的任何日期格式(例如:. 4/30/24(中文(简体) )
    • ISO日期(例如:. 2024-04-30T12:34:59Z(中文(简体) )
    • URL 网络

版本与发布记录

@contentful/content-source-maps 共发布 75 个版本,首次发布于 2024/02/08;过去 12 个月发布了 6 个版本。

版本发布日期距今
0.12.3latest2026/07/303 个月前
0.12.22026/04/276 个月前
0.12.12026/02/198 个月前
0.12.02026/01/269 个月前
0.11.442025/12/1510 个月前
0.11.432025/11/2411 个月前

其他发布通道:canary → 0.8.1-alpha.0。

关于 @contentful/content-source-maps 的常见问题

@contentful/content-source-maps 是什么?

用于构建内容源地图的 SDK 基础

如何安装 @contentful/content-source-maps?

在项目目录运行 npm install @contentful/content-source-maps,或使用 pnpm add / yarn add / bun add。

@contentful/content-source-maps 支持 TypeScript 吗?

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

@contentful/content-source-maps 支持 ESM 还是 CommonJS?

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

@contentful/content-source-maps 可以商用吗?

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

@contentful/content-source-maps 的下载量有多少?

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

@contentful/content-source-maps 还在维护吗?

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