mcpField
I
integrating-b2b-commerce-open-code-components

integrating-b2b-commerce-open-code-components

github.com/forcedotcom开发1.1k1.9k 次安装1 天前更新
代码仓库

关于 integrating-b2b-commerce-open-code-components

此技能将 Salesforce 官方开源 B2B Commerce 组件和标签复制到商店站点元数据,使其可在 Experience Builder 的组件面板中使用。它适用于新建或现有商店,并包含仓库、站点元数据检查及复制步骤。

主要功能

  1. 01复制 B2B Commerce 开源组件
  2. 02复制组件所需的标签文件
  3. 03检查并选择商店站点元数据
  4. 04支持覆盖现有文件或仅复制新增项
  5. 05提供部署与验证后续步骤

适用场景

  1. 01向现有 B2B Commerce 商店添加组件
  2. 02为新商店集成开源组件
  3. 03让组件出现在 Experience Builder 面板
  4. 04更新已集成的组件和标签

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/forcedotcom/sf-skills --skill integrating-b2b-commerce-open-code-components

安装后在 Claude Code 中输入/integrating-b2b-commerce-open-code-components确认已加载。

详细介绍

适用场景

在以下情况下使用此技能:

  • 将所有开源 B2B Commerce 组件集成到商店中
  • 向新的或现有的 B2B Commerce 商店添加开源组件
  • 在 Experience Builder 中提供开源代码组件

规则

  1. 始终先说明,再执行。 运行任何命令之前,必须先告诉用户该命令的作用以及运行它的原因。切勿只显示原始命令并请求许可。用户应能先阅读说明,了解目的,然后再批准。

概述

此技能会将官方 Salesforce 仓库(https://github.com/forcedotcom/b2b-commerce-open-source-components)中的所有开源 B2B Commerce 组件复制到 B2B Commerce 商店的站点元数据中。集成后,这些组件会显示在 Experience Builder 组件面板中。


启动流程

触发此技能时,在复制之前自动执行以下检查。

检查 0:确定软件包目录

读取 sfdx-project.json 并选定活动软件包目录。提取 packageDirectories[],并使用 "default": true 的条目;如果没有条目标记为默认,则使用第一个条目。在下文所有位置都将此值用作 <package-dir>。如果缺少 sfdx-project.json 或其中没有 packageDirectories,请告知用户并中止。

检查 1:开源仓库

确认仓库已克隆到 .tmp/b2b-commerce-open-source-components:

  1. 如果目录不存在: 告诉用户:“我正在将官方 B2B Commerce 开源组件仓库从 GitHub 克隆到本地 .tmp/ 文件夹,以便访问所有开源代码组件。” 然后运行:git clone https://github.com/forcedotcom/b2b-commerce-open-source-components .tmp/b2b-commerce-open-source-components
  2. 如果目录存在且包含 force-app/main/default/sfdc_cms__lwc 和 sfdc_cms__label,请提供以下选项:

    “开源仓库已克隆。你想如何继续?”

    1. 复用现有仓库 — 使用已克隆的仓库
    2. 重新克隆 — 删除现有仓库并从 GitHub 重新克隆
  3. 如果目录存在但结构无效: 告诉用户:“克隆的仓库结构异常。我将删除它并重新克隆一份。” 然后删除并重新克隆。
  4. 如果克隆失败: 告知用户并中止
检查 2:商店和站点元数据

确认已选定商店,并且站点元数据在本地可用:

  1. 告诉用户:“我正在检查你的项目是否已在本地包含 B2B 商店元数据。” 检查 <package-dir>/main/default/digitalExperiences/site/ 中是否包含任何商店目录。
  2. 如果存在商店元数据: 使用该元数据。如果找到多个商店,请用户选择一个。
  3. 如果未找到商店元数据: 在委派之前,先尝试从已连接的组织中检索:
    1. 运行 sf org list(或检查 sf config get target-org)以查找已连接的组织。如果有多个组织,请用户确认或选择一个。
    2. 使用 sf org list metadata --metadata-type DigitalExperienceBundle --target-org <alias> 列出该组织中的 DigitalExperienceBundle 站点包。筛选出 site/* 条目。
    3. 如果至少存在一个站点包,请询问用户要使用哪个,然后运行: sf project retrieve start --metadata "DigitalExperienceBundle:site/<storeName>" --target-org <alias> 该包会保存到 <package-dir>/main/default/digitalExperiences/site/<storeName>/。
    4. 仅当没有可用的已连接组织、找不到站点包或检索失败时: 委派给 creating-b2b-commerce-store 技能。

所有检查完成后的必需状态:

  • 软件包目录 — 检查 0 中确定的值(例如 force-app)
  • 商店名称 — 所选的 fullName 值(例如 My_B2B_Store1)
  • 站点元数据路径 — <package-dir>/main/default/digitalExperiences/site/<store-name>/
  • 仓库路径 — .tmp/b2b-commerce-open-source-components/

集成任务

将克隆仓库中的所有组件和标签复制到站点目录:

  • 源目录: .tmp/b2b-commerce-open-source-components/force-app/main/default/sfdc_cms__lwc/* 和 sfdc_cms__label/*(开源仓库自身的目录结构——始终为 force-app)
  • 目标目录: <package-dir>/main/default/digitalExperiences/site/<store-name>/sfdc_cms__lwc/ 和 sfdc_cms__label/(在 Check 0 中解析 <package-dir>)

步骤:

  1. 告诉用户:“我正在检查您的商店站点元数据中是否已存在开源代码组件。” 检查目标目录是否已包含文件。
  2. 如果存在文件,提供选项:

    “{store-name} 中已存在组件。您希望如何继续?”

    1. 全部覆盖 — 将所有现有组件替换为仓库中的最新版本
    2. 仅复制新增项 — 跳过现有组件,仅复制尚不存在的组件
  3. 告诉用户:“我现在正在将克隆仓库中的所有开源代码 LWC 组件复制到您商店的站点元数据目录中。” 将所有组件目录从源目录复制到目标目录。
  4. 告诉用户:“我正在复制这些组件所需的相关标签文件。” 将所有标签目录从源目录复制到目标目录。
  5. 报告:“已复制 X 个组件和 Y 组标签”

输出:

✅ Integration Complete!

Copied: X components and Y label sets to <store-name>

Next Steps:
1. Deploy: sf project deploy start -d <package-dir>/main/default/digitalExperiences/site/<store-name>
2. Open Experience Builder and use new components from the palette
3. Publish your site when ready

交互示例

用户:“将开源代码组件集成到我的商店”

Agent:“我正在检查开源组件仓库是否已克隆到本地……”

Agent: (仓库已存在)

“开源仓库已克隆。您希望如何继续?”

  1. 重用现有仓库 — 使用已克隆的仓库
  2. 重新克隆 — 删除现有仓库并从 GitHub 重新克隆

用户:“1”

Agent:“我正在检查您的项目是否已有本地 B2B 商店元数据……”

  • ✓ 找到 My_B2B_Store1 的商店元数据

Agent:“我正在检查您的商店站点元数据中是否已存在开源代码组件……”

Agent: (文件已存在)

“My_B2B_Store1 中已存在组件。您希望如何继续?”

  1. 全部覆盖 — 将所有现有组件替换为仓库中的最新版本
  2. 仅复制新增项 — 跳过现有组件,仅复制尚不存在的组件

用户:“1”

Agent:“我现在正在将克隆仓库中的所有开源代码 LWC 组件复制到您商店的站点元数据目录中……” Agent:“我正在复制这些组件所需的相关标签文件……”

  • ✓ 已复制 45 个组件和 38 组标签
✅ Integration Complete!

Copied: 45 components and 38 label sets to My_B2B_Store1

Next Steps:
1. Deploy: sf project deploy start -d force-app/main/default/digitalExperiences/site/My_B2B_Store1
2. Open Experience Builder and use new components from the palette
3. Publish your site when ready

错误处理

错误消息操作
未找到商店“在组织中找不到商店 ‘{name}’。”再次列出商店
Git 克隆失败“克隆仓库失败。请检查互联网连接。”重试或中止
仓库结构无效“仓库结构已更改。预期包含 sfdc_cms__lwc 和 sfdc_cms__label。”提醒用户并中止
文件复制失败“复制文件失败。请检查文件权限。”显示错误详情

验证清单

  • 启动流程已完成:仓库已克隆,商店元数据可用
  • 组件已复制到正确的目标路径(sfdc_cms__lwc/)
  • 标签已复制到正确的目标路径(sfdc_cms__label/)
  • 复制过程中没有文件权限错误
  • 已提供部署命令,并告知用户进行测试

评论

支持 Markdown