SuperAPI AI 工具集

v5-breaking-changes

编程与开发

查看项目

更新于 10-15 22:09

技能介绍

用途:在 Remotion 仓库中实现或审查 Remotion 5 的破坏性变更,适用于 v4 与 v5 发行线仍共享代码的阶段,确保 v4 行为与公共类型保持兼容,同时为 v5 预留切换机制。

主要方式:使用 packages/core/src/v5-flag.ts 中的中央编译期标志:export const ENABLE_V5_BREAKING_CHANGES = false as const;。在 v4/main 线保持其为字面量 false as const,不要改成环境变量、运行时选项或普通布尔值,其字面量类型同时决定公共 TypeScript API 与运行时行为;不要新增其他 v5 标志。在 packages/core 内从 v5-flag.ts 导入,其他包使用 remotion/no-react 的 NoReactInternals.ENABLE_V5_BREAKING_CHANGES。

运行时与类型门控:默认值和行为基于该标志分支,保留 v4 路径,例如 const effectiveValue = value ?? (NoReactInternals.ENABLE_V5_BREAKING_CHANGES ? v5Default : v4Default);。显式用户值优先,除非 v5 API 有意移除。公共类型用基于字面量标志的条件类型选择整个不兼容部分,v4 分支暴露兼容 API,v5 分支仅暴露预期 v5 API,不要把被移除字段留为可选或做两版本联合。可参考 packages/renderer/src/v5-required-input-props.ts、open-browser.ts、packages/google-fonts/src/base.ts。

文档与验证:在 packages/docs/docs/5-0-migration.mdx 记录每项用户可见破坏性变更,说明变更内容、v4 行为或签名、迁移方式及替代代码。检查:标志保持 false as const 时 v4 兼容;仅将中央标志改为 true as const 时同时启用 v5 运行时与类型;运行时校验与条件类型一致;迁移指南含该变更;受影响包构建、测试、lint 与格式通过。不要为测试 v5 而提交翻转后的标志,在共享线上恢复为 false as const。当 v5 不再与 v4 共享实现后可移除兼容分支。