关于 b2c-mrt
面向 PWA Kit 店铺团队的 b2c CLI 使用技能,用于管理 Managed Runtime 项目、环境、Bundle 和部署。它说明认证与配置来源,并介绍 legacy MRT Cloud API 与 SCAPI 后端的选择。
主要功能
- 01管理项目和环境
- 02部署及查看 Bundle
- 03维护环境变量与重定向
- 04配置组织成员和证书
- 05解析认证及后端配置
适用场景
- 01将本地构建部署到测试或生产环境
- 02克隆环境并复制配置
- 03查看部署历史或下载 Bundle
- 04管理环境变量和 URL 重定向
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ salesforcecommercecloud/ b2c-developer-tooling --skill b2c-mrt安装后在 Claude Code 中输入/b2c-mrt确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
evals/trigger-evals.jsonreferences/BUNDLE-COMMANDS.mdENVIRONMENT-COMMANDS.mdPROJECT-COMMANDS.md详细介绍
B2C MRT 技能
使用 b2c CLI 管理 PWA Kit 店面的 Managed Runtime(MRT)项目、环境、Bundle 和部署。
提示: 如果未全局安装
b2c,请改用npx @salesforce/b2c-cli(例如,npx @salesforce/b2c-cli mrt bundle deploy)。
配置与身份验证
CLI 会从 MRT_API_KEY(或 SFCC_MRT_API_KEY)、dw.json、~/.mobify 或配置插件中解析 MRT API 密钥。项目和环境默认值也可以来自 package.json 中的 b2c(mrtProject、mrtEnvironment)或环境变量。package.json 不能提供 API 密钥或其他机密信息。配置了默认值后,通常不需要使用 --api-key、-p 和 -e 等标志——只有在需要覆盖默认值时才传入。
运行 b2c setup inspect 查看解析后的配置以及每个值的来源(用于脚本时可使用 --json;除非用户明确要求查看,否则应对机密信息进行掩码处理)。有关优先级规则和故障排除,请参阅 b2c-cli:b2c-config 技能。
MRT 后端(旧版与 SCAPI)
大多数 MRT 命令通过 API 密钥访问旧版 MRT Cloud API。部分命令也可以使用 SCAPI MRT 后端:mrt bundle history、mrt bundle list、mrt bundle deploy(本地构建推送和部署现有 <bundleId> 均适用),以及 mrt env var 系列命令(list / set / push / delete)。使用 --mrt-backend 选择后端(也可使用 MRT_BACKEND / SFCC_MRT_BACKEND,或在 dw.json 中设置 mrtBackend):
auto(默认)——如果已配置 SCAPI(--short-code+--tenant-id+ 客户端凭据或 JWT Bearer 身份验证),则使用 SCAPI;否则使用旧版后端。遇到安全的执行前错误时会回退到旧版后端。每条命令都会请求自身所需的作用域:Bundle 命令使用sfcc.storefront.deployments[.rw];环境变量命令使用sfcc.storefront.environments[.rw](读取可接受任一级别,写入则需要.rw)。legacy——始终使用 MRT Cloud API。scapi——始终使用 SCAPI,不回退;缺少前置条件时会报错。不支持的命令也会报错(除上述 Bundle 和环境变量命令外的所有 MRT 命令)。
注意:
- 使用
--json时,这些命令会输出所用后端的原生格式(例如,bundle history在旧版后端返回{count, next, previous, deployments},在 SCAPI 后端返回{limit, offset, total, data};env var list在旧版后端返回{count, variables},而在 SCAPI 后端返回原生环境变量映射)。面向用户的表格格式已统一,但--json输出未统一。脚本需要稳定格式时,请固定使用legacy或scapi。 - SCAPI 后端中的环境变量操作使用 Storefront Environments API。
set和delete使用合并式 PATCH(仅更改传入的键;delete会将该键设为null);两个后端都会始终对值进行掩码处理。push会根据初次读取结果解析后端,并将所有写入固定到该后端,因此单次push不会跨后端操作。 - SCAPI 处理请求时,会忽略旧版专用标志(并发出警告):
--api-key、--cloud-origin/-u、--credentials-file/-c。 --storefront(长选项)和-s(短选项)是--project/-p的别名——SCAPI 店面 ID 就是项目 slug,因此在所有mrt命令中,这四个选项可以互换。对于mrt project create,此标志用于设置新项目的 slug(省略时会根据名称自动生成);mrt bundle save使用-d作为--save-dir,因此-s可用于店面别名。
命令结构
mrt
├── org - Organizations and B2C connections
│ ├── member - Organization-level member management
│ └── cert - Custom domain certificates
├── project - Project management
│ ├── member - Team member management
│ └── notification - Deployment notifications
├── env - Environment management (incl. clone)
│ ├── var - Environment variables
│ ├── redirect - URL redirects
│ └── access-control - Access control headers
├── bundle - Bundle and deployment management (incl. delete)
└── user - User profile and settings
快速示例
部署 Bundle
# Push local build to staging
b2c mrt bundle deploy -p my-storefront -e staging
# Push to production with release message
b2c mrt bundle deploy -p my-storefront -e production -m "Release v1.0.0"
# Deploy existing bundle by ID
b2c mrt bundle deploy 12345 -p my-storefront -e production
# Build and upload a v2-format bundle (upload only; deploy the returned ID separately)
b2c mrt bundle upload-v2 -p my-storefront
管理环境
# List environments
b2c mrt env list -p my-storefront
# Create a new environment
b2c mrt env create qa -p my-storefront --name "QA Environment"
# Clone an existing environment (-e is the source; positional arg is the new slug)
b2c mrt env clone qa -p my-storefront -e staging --clone-redirects --clone-env-vars
# Get environment details
b2c mrt env get -p my-storefront -e production
# Invalidate CDN cache
b2c mrt env invalidate -p my-storefront -e production
环境变量
# List variables
b2c mrt env var list -p my-storefront -e production
# Set variables
b2c mrt env var set API_KEY=secret DEBUG=true -p my-storefront -e staging
# Delete a variable
b2c mrt env var delete OLD_VAR -p my-storefront -e production
查看部署历史
# List bundles in project
b2c mrt bundle list -p my-storefront
# View deployment history for environment
b2c mrt bundle history -p my-storefront -e production
# Download a bundle artifact
b2c mrt bundle download 12345 -p my-storefront
# Delete one or more bundles (uses bulk-delete for >1)
b2c mrt bundle delete 12345 -p my-storefront
b2c mrt bundle delete 12345 12346 12347 -p my-storefront --force
组织成员和证书
组织成员不同于项目成员;他们在组织级别拥有角色。自定义域名证书的作用范围是组织级别,并通过 --certificate-id 传递给 b2c mrt env create/update/clone。
# List, add, update, remove organization members
b2c mrt org member list --org my-org
b2c mrt org member add [email protected] --org my-org --role member --view-all-projects
b2c mrt org member update [email protected] --org my-org --no-cert-permission
b2c mrt org member remove [email protected] --org my-org
# Manage custom domain certificates
b2c mrt org cert list --org my-org
b2c mrt org cert create shop.example.com --org my-org # output includes the DNS validation record
b2c mrt org cert get 123 --org my-org
b2c mrt org cert restart-validation 123 --org my-org
b2c mrt org cert delete 123 --org my-org
项目管理
# List projects
b2c mrt project list
# Get project details
b2c mrt project get -p my-storefront
# List project members
b2c mrt project member list -p my-storefront
# Add a member
b2c mrt project member add [email protected] -p my-storefront --role developer
URL 重定向
# List redirects
b2c mrt env redirect list -p my-storefront -e production
# Create a redirect
b2c mrt env redirect create -p my-storefront -e production \
--from "/old-path" --to "/new-path"
# Clone redirects between environments
b2c mrt env redirect clone -p my-storefront --source staging --target production
配置
dw.json
在项目的 dw.json 中配置 MRT 设置:
{
"mrtProject": "my-storefront",
"mrtEnvironment": "staging"
}
环境变量
export MRT_API_KEY=your-api-key
export MRT_PROJECT=my-storefront
export MRT_ENVIRONMENT=staging
export MRT_BACKEND=auto # auto (default) | legacy | scapi
~/.mobify 配置
将 API 密钥存储在 ~/.mobify 中:
{
"api_key": "your-mrt-api-key"
}
详细参考
更多命令
运行 b2c mrt --help,查看可用命令和选项的完整列表。