关于 generating-ui-bundle-site
用于创建和配置承载 React UI bundle 的 Salesforce Digital Experience Site 的技能,可生成所需站点元数据,并核对站点指向的应用。
主要功能
- 01解析五项必需站点属性
- 02生成站点元数据结构
- 03按文档模板填写元数据
- 04验证 UI bundle 引用和部署
适用场景
- 01为 React UI bundle 创建 Salesforce 站点
- 02使用项目和组织信息配置站点元数据
- 03跨元数据组件更新站点 URL
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ forcedotcom/ sf-skills --skill generating-ui-bundle-site安装后在 Claude Code 中输入/generating-ui-bundle-site确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
docs/configure-metadata-custom-site.mdconfigure-metadata-digital-experience-bundle.mdconfigure-metadata-digital-experience-config.mdconfigure-metadata-digital-experience.mdconfigure-metadata-network.mdupdate-site-urls.md详细介绍
React UI 包的数字体验站点
在 Salesforce 上创建并配置用于托管 React UI 包的数字体验站点。此技能会生成所需的最少站点基础设施——Network、CustomSite、DigitalExperienceConfig、DigitalExperienceBundle 和 sfdc_cms__site 内容类型——以便 React 应用能够通过 Salesforce 提供服务。
React 站点与标准 LWR 站点不同:不需要路由、视图、主题布局或品牌集。该站点是一个轻量容器(appContainer: true),会将渲染工作交给 appSpace 引用的 React UI 包。
必需属性
生成任何元数据之前,先解析全部五个属性。每个属性都有一条回退链——按顺序逐一尝试,直到找到值。
| 属性 | 格式 | 解析方法 |
|---|---|---|
| siteName | UpperCamelCase(例如,MyCommunity) | 询问用户或根据上下文推导 |
| siteUrlPathPrefix | 全小写(例如,mycommunity) | 由用户提供,或将 siteName 转换为仅包含字母数字字符的全小写形式 |
| appNamespace | 字符串 | sfdx-project.json 中的 namespace → sf data query -q "SELECT NamespacePrefix FROM Organization" --target-org ${usernameOrAlias} → 默认值 c |
| appDevName | 字符串 | 项目中的 UIBundle 元数据 → sf data query -q "SELECT DeveloperName FROM UIBundle" --target-org ${usernameOrAlias} → 默认为 siteName |
| enableGuestAccess | 布尔值 | 询问用户是否允许未认证的访客用户访问站点 API → 默认值 false |
appNamespace 和 appDevName 属性用于将站点连接到正确的 React 应用。若这两个属性设置错误,站点虽然能够部署,但会显示空白页面,因此请务必根据实际项目数据进行解析。
生成工作流
步骤 1:解析所有必需属性
在构建任何内容之前,确定全部五个属性的值。使用上表中的解析策略,按顺序尝试每个选项,直到找到值。
步骤 2:创建项目结构
使用可用的 Salesforce 元数据架构和 Network、CustomSite、DigitalExperienceConfig 与 DigitalExperienceBundle 的字段上下文,确保每个文件都采用有效结构。
使用以下路径创建任何尚不存在的文件和目录:
| 元数据类型 | 路径 |
|---|---|
| Network | networks/{siteName}.network-meta.xml |
| CustomSite | sites/{siteName}.site-meta.xml |
| DigitalExperienceConfig | digitalExperienceConfigs/{siteName}1.digitalExperienceConfig-meta.xml |
| DigitalExperienceBundle | digitalExperiences/site/{siteName}1/{siteName}1.digitalExperience-meta.xml |
| DigitalExperience(sfdc_cms__site) | digitalExperiences/site/{siteName}1/sfdc_cms__site/{siteName}1/* |
DigitalExperience 目录仅包含 _meta.json 和 content.json。请勿在包内创建 sfdc_cms__site 以外的目录。
步骤 3:填充所有元数据字段
使用下方文档中的默认模板。{大括号} 中的值是已解析的属性引用——用步骤 1 中的实际值替换它们。
| 元数据类型 | 模板参考 |
|---|---|
| Network | configure-metadata-network.md |
| CustomSite | configure-metadata-custom-site.md |
| DigitalExperienceConfig | configure-metadata-digital-experience-config.md |
| DigitalExperienceBundle | configure-metadata-digital-experience-bundle.md |
| DigitalExperience(sfdc_cms__site) | configure-metadata-digital-experience.md |
更新 URL 时,请参阅 update-site-urls.md。
步骤 3 执行说明:加载并使用文档
- Agent 在尝试填充元数据字段之前,必须阅读步骤 3 中引用的每个
docs/*.md文件的完整内容。 - 使用平台的文件读取工具(例如
read_file)完整加载这些文件,然后使用步骤 1 中解析出的属性值替换{大括号}中的占位符。 - 需要加载的文件:
docs/configure-metadata-network.mddocs/configure-metadata-custom-site.mddocs/configure-metadata-digital-experience-config.mddocs/configure-metadata-digital-experience-bundle.mddocs/configure-metadata-digital-experience.md
- 阅读文件的完整内容,替换占位符(例如
{siteName})为解析出的值,然后使用展开后的模板填充元数据 XML/JSON 内容。
步骤 4:不要修改非模板属性
不要修改 Network、CustomSite、DigitalExperience、DigitalExperienceConfig 或 DigitalExperienceBundle 元数据中未以 {大括号} 变量形式表示的任何默认属性值。
验证清单
部署前,请确认:
- 所有五个必需属性均已解析
- 所有元数据目录和文件均按项目结构存在
- 所有元数据字段均符合步骤 3 模板,且仅替换了
{大括号}中的内容;未添加或更改其他默认属性值 -
content.json中的appSpace与现有的UIBundle元数据记录一致 - 部署验证成功:
sf project deploy validate --metadata Network CustomSite DigitalExperienceConfig DigitalExperienceBundle DigitalExperience --target-org ${usernameOrAlias}
常见工作流
更新体验站点 URL
适用场景: 用户希望更新或更改站点 URL(urlPathPrefix)。
步骤:
- 阅读 update-site-urls.md,了解三组件架构和 URL 更新工作流
- 按照文档中的分步工作流,在所有三个组件(DigitalExperienceConfig、Network、CustomSite)中一致地更新 URL