关于 canvas-workbench
canvas-workbench 是用于 React Canvas 项目的本地预览与验证技能,面向开发和检查组件、页面的工作流。它指导 Workbench 的安装、配置与复用,并强调通过实际预览反复核验改动。
主要功能
- 01识别 Canvas 项目类型
- 02按包管理器启动 Workbench
- 03按需配置 canvas.config.json
- 04复用本地预览服务器
- 05验证组件与页面渲染
- 06协调页面和模拟数据编写
适用场景
- 01检查 React 组件改动的渲染结果
- 02预览页面并迭代修正实现
- 03按项目路径配置 Canvas Workbench
- 04复用预览服务器完成多轮核验
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ drupal-canvas/ skills --skill canvas-workbench安装后在 Claude Code 中输入/canvas-workbench确认已加载。
附带文件references/components.mdreferences/pages.md
详细介绍
项目类型
应用此技能前,请检查 package.json 中是否有名为
@drupal-canvas/headless 或以 @drupal-canvas/headless- 开头的依赖。如果存在,则这是一个 Canvas Headless 代码库——请先阅读
canvas-headless。Workbench 目前仅支持 React 项目:可在 React headless 项目(Next.js、
TanStack Start)中使用,但在 Nuxt 和 Astro 项目中,请改用框架开发服务器验证组件。如果不存在此类依赖,则这是一个 Canvas 渲染的 React 代码库:组件使用 React(index.jsx/.tsx),本技能中的所有内容均按原样适用。项目类型仅有这两种。
安装检查
尝试使用 Workbench 前,请检测项目的包管理器,并使用其可执行运行器运行
@drupal-canvas/workbench。
首选命令:
- npm:
npx @drupal-canvas/workbench - pnpm:
pnpm dlx @drupal-canvas/workbench - bun:
bunx @drupal-canvas/workbench - yarn:
yarn dlx @drupal-canvas/workbench
选择与代码库包管理器匹配的命令。请根据锁文件和项目现有约定进行判断。
如果包运行器或 @drupal-canvas/workbench 不可用,请停止,并告知用户当前环境中无法使用 Canvas Workbench。询问用户是否希望安装。如果用户同意,请使用匹配的包管理器将
@drupal-canvas/workbench 安装为开发依赖:
- npm:
npm install --save-dev @drupal-canvas/workbench - pnpm:
pnpm add --save-dev @drupal-canvas/workbench - bun:
bun add --dev @drupal-canvas/workbench - yarn:
yarn add --dev @drupal-canvas/workbench
安装完成后,使用匹配的运行器命令,并继续进行 Workbench 验证。如果用户拒绝,请停止,不要猜测其他启动命令。
配置检查
如果项目使用 Canvas 默认布局,Workbench 不需要 canvas.config.json 文件。
启动 Workbench 前,请检查项目是否采用以下默认路径:
componentDir:项目根目录pagesDir:./pagesaliasBaseDir:srcglobalCssPath:./src/components/global.css
如果项目使用这些默认值,且缺少 canvas.config.json,则无需创建该文件,直接继续。
如果项目使用不同的组件路径、页面路径、@/ 导入解析方式或全局 CSS 入口,请在启动 Workbench 前,在项目根目录中添加或更新 canvas.config.json。只设置项目需要的选项。
示例:
{
"componentDir": "./src/components",
"pagesDir": "./pages",
"aliasBaseDir": "src",
"globalCssPath": "./src/global.css"
}
启动 Workbench
需要使用 Workbench 进行验证且包运行器命令可用时:
- 在项目根目录运行匹配的 Workbench 命令。
- 将其视为长时间运行的本地开发服务器进程。
- 阅读启动输出,并使用其中显示的本地 URL。
- 验证结果期间保持服务器运行。
如果当前项目已有运行中的 Workbench 服务,请复用它,不要启动第二个实例。
页面、站点和客户端上下文
交互式预览和 preview-build 输出都会自动提供 usePageContext()、useSiteContext() 和 useJsonApiClient() 的 providers。不要添加组件级 providers,也不要注入 Drupal 全局变量来让这些 hooks 正常工作。站点数据和客户端配置来自 Vite 集成发出的公开 /canvas/api/v0/site-data 请求,并使用现有配置作为回退。
Workbench 不会加载当前 Drupal 页面的上下文。其有意设置的页面默认值为:
{ pageTitle: '', breadcrumbs: [], mainEntity: null }
因此,面包屑轨迹为空或依赖实体的组件被隐藏,可能是正确行为。请在 Drupal 或路由化的无头应用中验证实际页面上下文;不要在组件 mocks 中编造 JSON:API 负载或页面上下文 fixture 来掩盖这些默认值。继续使用真实的加载、空和错误状态。
修改现有 mock 会就地刷新已挂载的预览,并保留组件状态。添加或移除发现文件可能会导致 iframe 重新挂载。检查初始状态时,请明确重新加载,不要假定修改 mock 会重置状态。
验证工作流
Workbench 是本地预览验证的运行时界面。在迭代验证时,请在多轮修复和审查过程中重复使用同一个 Workbench 服务和预览路由。
将 Workbench 纳入常规实现流程:
- 启动或复用 Workbench。
- 打开相关的组件预览状态或页面预览。
- 验证请求的更改是否正确呈现。
- 如果结果不正确,请更新实现并再次验证。
- 只有在 Workbench 验证通过后才完成;如果验证受阻,请清楚说明原因。
范围
此 skill 用于启动和使用 Workbench,以及协调页面和 mock 编写工作。它不是 Canvas 组件规范的权威来源。
- 创建或验证组件结构、
component.yml、命名或 mock 覆盖预期时,请使用canvas-component-definition。 - 创建或验证页面 JSON 文件、页面结构或页面 schema 要求时,请使用
canvas-page-definition。 - 需要编写或验证
mocks.json时,请使用canvas-component-definition/references/component-mocks.md。 - 需要了解 Workbench 专属的组件审查流程以及组件预览文件所在位置时,请使用
references/components.md。 - 需要了解 Workbench 专属的页面预览流程以及配置的页面位置时,请使用
references/pages.md。