用途
该技能指导如何在 Remotion 中新增一个 CLI 或配置选项。它覆盖两种情形:把已有的硬编码 CLI 标志转换为规范的 AnyRemotionOption,或添加一个全新的选项。整个流程从选项定义开始,经过注册、CLI 解析、配置接入,最后到文档更新与构建验证。
主要能力
- 创建选项定义文件,声明名称、cliFlag、id、描述、SSR 名称、文档链接和值类型。
- 在选项索引中注册,使其可通过 BrowserSafeApis.options 访问。
- 更新 CLI 解析标志与类型定义。
- 在需要的位置通过 getValue 解析选项值,而非直接读取 parsedCli。
- 将选项接入 Config,提供 setter 签名与实现。
- 更新 CLI 命令页、API 页、配置文档,并使用 <Options id="..." /> 组件保持单一事实来源。
- 生成选项参考文档并执行构建与校验命令。
使用方式
-
创建选项定义:在 packages/renderer/src/options/<name>.tsx 中定义 AnyRemotionOption,包含 name、cliFlag、id、description、ssrName、docLink、type、getValue、setConfig。id 必须唯一,仅含小写字母、数字和连字符,通常与 cliFlag 一致。对于取反标志(如 --disable-ask-ai 对应 askAIEnabled = false),在 getValue 中处理反转。
-
注册到选项索引:在 packages/renderer/src/options/index.tsx 中添加导入(按字母顺序)并加入 allOptions 对象。
-
更新 CLI 解析标志:在 packages/cli/src/parsed-cli.ts 中,布尔标志需加入 BooleanFlags 数组;非布尔标志无需在此添加。在 packages/cli/src/parse-command-line.ts 中,加入解构的 BrowserSafeApis.options,并在 CommandLineOptions 类型中添加对应字段。
-
在需要处使用选项:通过 myFlagOption.getValue({commandLine: parsedCli}).value 解析,而非直接读取 parsedCli。Studio 选项通常在 packages/cli/src/studio.ts,渲染选项在相关渲染命令文件中。若选项被 Studio 消费,需先完整阅读 ../studio-config-option-lifecycle/SKILL.md,将其分类为启动固定或可重载,不允许混合行为;若任一消费者需要启动固定行为,则向所有消费者传递启动快照。
-
添加到 Config:在 packages/cli/src/config/index.ts 中,加入解构的 BrowserSafeApis.options,在 FlatConfig 类型中添加 setter 签名,并在 Config 对象中实现,如 setMyFlagEnabled: myFlagOption.setConfig。
-
更新文档(必做):每个新选项都必须更新文档以使用 <Options id="..." />,使描述自动来自选项定义。CLI 命令页(cli/render.mdx、lambda/cli/render.mdx、cloudrun/cli/render.mdx、cli/benchmark.mdx)需添加或更新对应章节,使用 <Options id="my-flag" /> 作为描述主体,id 必须与选项 id 一致。CLI 帮助元数据需在 packages/cli/src/print-help.ts、packages/lambda/src/cli/help.ts 或 packages/cloudrun/src/cli/help.ts 中为各支持命令的选项列表添加该标志。API 页需为每个公开参数单独设标题。packages/docs/docs/config.mdx 需添加或更新对应 setter 章节,包含 <Options id="my-flag" />、twoslash 配置示例,以及指向 /docs/options/<id> 的链接并说明 CLI 标志优先。生成选项参考:使用下方命令生成 packages/docs/docs/options/<id>.mdx 和选项索引,应编辑选项定义与 API/配置文档而非生成的 MDX。选项页会自动加入侧边栏。
-
构建与验证:在仓库根目录执行 bun run build,然后进入 packages/docs 执行 bun run generate-option-docs、bun run render-cards、bun run check-option-docs。验证 /docs/options/<id> 包含描述、支持的命令及相关 API/配置链接。提交生成的页面与索引、文章目录(packages/docs/src/data/articles.ts)以及新的社交预览卡片。
适用场景
- 需要为 Remotion CLI 添加新的命令行标志。
- 需要将现有硬编码的 CLI 标志重构为规范的 AnyRemotionOption。
- 需要新增可通过 Config 设置的选项,并保持文档自动同步。
限制
- 选项 id 必须唯一,仅含小写字母、数字和连字符。
- 若选项被 Studio 消费,必须遵循 studio-config-option-lifecycle 的启动固定或可重载分类,不允许混合行为。
- 文档更新为强制步骤,不可跳过。
- 应编辑选项定义与 API/配置文档,而非生成的 MDX 文件。
- 具体构建命令与文件路径以资料所述为准,其他环境细节暂未提供。