@canva/intents

中文文档
2.8.0发布于 2026/10/29SEE LICENSE IN LICENSE.md FILETypeScriptESM + CJS零依赖近 30 天下载 7.7万

Canva 开发者 SDK Intents 库用于 Canva 内部的应用程序

中文使用文档
文档目录11 节
  1. 目录
  2. 导言
  3. 安装
  4. 使用量
  5. 准备意图
  6. 数据连接示例
  7. 设计编辑器示例
  8. 内容发布器实例
  9. 相关软件包
  10. 捐款
  11. 许可证

@ canva/ intents (英语)

一个Canva开发者SDK软件包,用于Canva内部构建应用软件. 为与App Intents合作提供类型和公用事业.

目录

导言

@canva/intents 是 npm 建设软件包 canva 内部的应用程序 与 Canva 开发者 SDK . 它提供意向特定类型和帮助器,允许应用程序与Canva编辑器内部的特定表面相融合——如数据连接器面板或设计编辑器.

一个"意向"代表一个应用程序可以支持的特定用户工作流程. 例如:

  • 用户可以从执行此程序的应用程序中选择并导入数据 数据连接器 意图.
  • 一个应用软件能够通过执行 Canva 设计表面来展示互动和创造性的工具 设计编辑器 意图.
  • 用户可以直接向外部平台发布他们的Canva设计.

这个 @canva/intents 软件包包含 所有可用意图,导出每个意图的类型信息并准备函数,按域分组. 这使得您的应用程序可以准备一个或多个意图,同时保留每个意图的执行模块和类型安全.

目前得到支持的意图:

今后将增加新的意图.

说明: 要与 Canva 开发者 SDK 一同起来运行, 请检查 快速启动指南。 。 。 .

安装

npm install @canva/intents

使用量

准备意图

每个意图类型都有相应的 prepare 函数 @canva/intents 软件包。 您可以通过调用适当的程序执行应用程序代码中的任何意图 prepare 函数及其所需的特定参数.

数据连接示例

以下是一个完整的例子 data_connector 意图,允许用户从应用程序导入表格数据:

import { createRoot } from 'react-dom/client';
import { AppUiProvider } from '@canva/app-ui-kit';
import { prepareDataConnector } from '@canva/intents/data';
import { DataSelectionUI } from './data_selection_ui';
import { fetchData } from './fetch_data';

prepareDataConnector({
  getDataTable: async (request) => {
    try {
      const dataTable = await fetchData(request); // your data fetching logic here
      return {
        status: 'completed',
        dataTable,
      };
    } catch {
      return {
        status: 'app_error',
        message: 'Failed to fetch data',
      };
    }
  },

  renderSelectionUi: (request) => {
    const root = createRoot(document.getElementById('root') as Element);
    root.render(
      <AppUiProvider>
        <DataSelectionUI {...request} />
      </AppUiProvider>
    );
  },
});

设计编辑器示例

import { prepareDesignEditor } from '@canva/intents/design';

prepareDesignEditor({
  render() {
    // render logic
  },
});

内容发布器实例

import { prepareContentPublisher } from "@canva/intents/content";

prepareContentPublisher({
  renderSettingsUi: ({
    updatePublishSettings,
    registerOnContextChange,
  }) => {
    root.render(
      <AppUiProvider>
        <SettingUi
          updatePublishSettings={updatePublishSettings}
          registerOnContextChange={registerOnContextChange}
        />
      </AppUiProvider>,
    );
  },

  renderPreviewUi: ({ registerOnPreviewChange }) => {
    root.render(
      <AppUiProvider>
        <PreviewUi registerOnPreviewChange={registerOnPreviewChange} />
      </AppUiProvider>,
    );
  },

  getPublishConfiguration: async () => {
    return {
      status: "completed",
      outputTypes: [
        {
          id: "post",
          displayName: "Post",
          mediaSlots: [
            {
              id: "media",
              displayName: "Media",
              fileCount: { exact: 1 },
              accepts: {
                image: {
                  format: "png",
                },
              },
            },
          ],
        },
      ],
    };
  },

  publishContent: async (request: PublishContentRequest) => {
    // logic to upload media to your platform here
    return {
      status: "completed",
      externalId: "1234567890",
      externalUrl: "https://example.com/posts/1234567890",
    };
  },
});

Canva内部的App是用以下 Canva 开发者 SDK 包构建的 :

  • @canva/app-ui-kit - 基于反应的组件库,用于创建模仿Canva外观和感觉的应用程序.
  • @canva/asset - 提供处理资产的方法,例如图像和录像文件.
  • @canva/design - 提供与用户设计互动的方法,例如创建要素.
  • @canva/error - 提供 CanvaError 处理错误的课.
  • @canva/platform - 提供实用方法,例如打开外部链接的方法.
  • @canva/user - 提供获取用户数据和认证用户的方法.

捐款

我们正在积极开发这个一揽子计划,但目前不接受第三方的捐款. 如果您想要求修改或添加软件包,请通过 Canva 开发者社区。 。 。 .

许可证

见 LICENSE.md 文档.

版本与发布记录

@canva/intents 共发布 32 个版本,首次发布于 2025/05/16;过去 12 个月发布了 25 个版本。

版本发布日期距今
2.8.0latest2026/10/2911 天前
2.7.2-beta.0betapreview2026/09/231 个月前
2.7.12026/09/221 个月前
2.7.02026/08/192 个月前
2.6.1-beta.12026/07/243 个月前
2.6.1-beta.02026/06/194 个月前

关于 @canva/intents 的常见问题

@canva/intents 是什么?

Canva 开发者 SDK Intents 库用于 Canva 内部的应用程序

如何安装 @canva/intents?

在项目目录运行 npm install @canva/intents,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@canva/error(^2.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@canva/intents 支持 TypeScript 吗?

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

@canva/intents 支持 ESM 还是 CommonJS?

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

@canva/intents 可以商用吗?

@canva/intents 使用 SEE LICENSE IN LICENSE.md FILE 许可。许可条款写在包内的独立文件中,请阅读该文件确认可否商用。以上为概括,不构成法律意见,请以许可原文为准。

@canva/intents 的下载量有多少?

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

@canva/intents 还在维护吗?

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