news 2026/9/7 23:43:53

Remotion 文档发布流程:如何把 PR 中的 AvailableFrom 更新为下一个补丁版本

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Remotion 文档发布流程:如何把 PR 中的 AvailableFrom 更新为下一个补丁版本

Remotion 文档发布流程:如何把 PR 中的 AvailableFrom 更新为下一个补丁版本

【免费下载链接】remotion🎥 Make videos programmatically with React项目地址: https://gitcode.com/GitHub_Trending/re/remotion

在 Remotion 仓库中,每一篇文档页面都可以用<AvailableFrom v="...">组件标注某个 API、命令或功能是从哪个版本开始可用的。当 PR 包含文档改动且引入了新的AvailableFrom标注时,其取值必须反映"下一个将发布的版本",而不是main分支上已经存在的旧版本。本文以仓库中.agents/skills/update-version/SKILL.md这份 Agent 技能文档为核心,完整讲解这套"取main版本 → 计算下一个补丁版本 → 只改本 PR 触及的条目 → 提交推送"的操作流程,并结合packages/core/src/version.tspackages/docs/src/components/AvailableFrom.tsx、根目录set-version.ts等源码,说明每个步骤背后的版本管理机制,读完你可以独立完成 Remotion 文档 PR 的版本标注修正。

一、背景:AvailableFrom在 Remotion 文档中的作用

AvailableFrom是 Remotion 文档站点(位于packages/docs)自定义的 MDX 全局组件。它的作用是在文档段落旁渲染一个版本徽标,并指向该版本的 Release 页面,让读者一眼看出"这个功能从 v 多少开始可用"。

组件实现在 AvailableFrom.tsx,关键行为有三点:

  1. v属性必填:源码中如果v为空会直接throw new Error('v is required'),意味着文档构建期就能暴露缺失的版本标注;
  2. 容忍v前缀if (v.startsWith('v')) { v = v.slice(1); },即写v="4.0.469"v="4.0.469"效果一致;
  3. 渲染为 Release 链接:组件最终输出一个<a>href指向对应 GitHub Release 页面(v${v}形式的 tag 路径),徽标上显示v{v},鼠标悬停提示Added in v{v}

该组件通过 Docusaurus 的主题扩展注册为全局 MDX 组件:MDXComponents.js 将AvailableFrom连同MinNodeVersionMinBunVersionMinEslintVersion等一并导出,因此任意.mdx文档都可直接使用<AvailableFrom v="..." />,无需 import。仓库中大量文档页面(如packages/docs/docs/animatedimage.mdxpackages/docs/docs/bundle.mdx等)都在用它。

理解了组件的渲染语义后,就能明白版本取值为什么重要:v的值会被直接拼进 Release 链接。如果填了一个尚未发布的版本号,链接指向一个不存在的 tag;如果填了main上已发布的旧版本号,则会误导读者以为该功能是旧版本就有的。

二、为什么是"main版本 + 0.0.1":Remotion 的版本模型

要理解 update-version 技能的计算规则(mainVERSION加 1 个补丁位),需要先看清 Remotion 仓库的版本管理链条:

1. 版本号的唯一事实来源是packages/core/src/version.ts

该文件内容非常短(见 version.ts):

// Automatically generated on publish export const VERSION = '4.0.520';

文件头部注释 "Automatically generated on publish" 说明它不是手工维护的——每次发布时由脚本重新生成。

2. 生成逻辑在packages/core/ensure-correct-version.ts

ensure-correct-version.ts 会读取packages/core/package.json中的version字段,重新写出src/version.ts,然后执行构建(bun run make与类型检查),并校验dist/esm/version.mjsdist/cjs/version.js两份产物中都确实包含了新版本号,任何一个缺失都会process.exit(1)。这保证了"package.json、源码常量、构建产物"三处版本严格一致。

3. 发布时由根目录set-version.ts统一抬升所有包。

set-version.ts 是发布脚本(用法bun set-version.mjs 4.0.178),它要求当前在main分支上,遍历packages/下所有含package.json的目录(外加cloudrun/container),把每个应发布包的version写成新版本,随后依次触发 core 与 media-parser 的ensure-correct-version.ts校验、全仓库构建、packages/it-tests的版本一致性测试,最后git add .提交一个v<version>的 commit 并打 tag。

4. 补丁版本递增是 Remotion 的既定发布节奏。

仓库中另一份配套技能 version/SKILL.md 明确了这一前提:

We are working on the next version of Remotion. The current version can be found inpackages/core/src/version.ts.The next version is going to be a patch version.Ensure the docs correctly reference the next version.

即:main上的VERSION是"最近一次已发布"的版本,下一个版本一定是 patch + 1。update-version 技能正是在这个前提下工作的——文档 PR 中新增的AvailableFrom应该指向"即将包含这些改动的那次发布",也就是main版本 + 0.0.1。

三、操作流程:五步完成 PR 中AvailableFrom的版本更新

以下流程完整继承自 update-version/SKILL.md,适用于"PR 包含packages/docs下的文档改动,其中带有<AvailableFrom v="...">,且取值应反映下一个发布版本"的场景。

步骤 1:获取main分支的规范版本号

git fetch origin main --quiet git --no-pager show origin/main:packages/core/src/version.ts

从输出中读出VERSION常量(例如4.0.468),然后把 patch 位加 1,得到下一个补丁版本(4.0.469)。

两点细节值得注意:

  • 使用git show origin/main:...直接读取远端main的文件内容,而不是读本地工作区——你的 PR 分支可能落后于main,本地文件可能过期,必须以远端为准;
  • 只读取、不修改version.ts,它由发布流程(set-version.tsensure-correct-version.ts)自动维护,文档 PR 不应触碰。

步骤 2:定位当前 PR 改动的AvailableFrom条目

git --no-pager diff origin/main...HEAD -- packages/docs | rg 'AvailableFrom v="'

这条命令有三个精确约束,缺一不可:

  • origin/main...HEAD三点 diff 只统计"本 PR 相对main的分叉点"引入的改动,排除main上其他 PR 的变化;
  • -- packages/docs把范围限定在文档目录(AvailableFrom只出现在文档源码中);
  • rg 'AvailableFrom v="'只保留含版本标注的行,快速得到待核对清单(含文件路径与行上下文)。

步骤 3:只更新本 PR 触及的AvailableFrom取值

将步骤 2 中列出的条目,其v属性统一改为步骤 1 计算出的下一个补丁版本(如4.0.469)。写法上v="4.0.469"v="v4.0.469"均可——从 AvailableFrom.tsx 的源码看,组件会自动剥离v前缀。

步骤 4:不要改动 PR diff 之外的AvailableFrom

这是技能文档中明确写出的红线:全仓库有成百上千处AvailableFrom标注(仅packages/docs/docs下的.mdx就有大量命中),其中绝大多数对应的是早已发布的历史功能。它们的v值是"该功能首次可用版本"的准确记录,与当前发布版本无关。只改本 PR diff 中的条目,可以避免一次 PR 引入与主题无关的海量文档噪音,也让 diff 评审聚焦于本次改动。

步骤 5:提交并推送

将更新后的文档改动 commit 并 push 到当前 PR 分支。至此,PR 中新增功能标注的版本号就与"下一个实际会发布的版本号"对齐了;等main合入、执行bun set-version.ts <version>发布时,main上的VERSION正好推进到该值,文档标注随即变为"已发布版本",Release 链接也真实可达。

四、与发布脚本的联动:版本推进的完整闭环

把 update-version 技能放回整个发布链路中看,它其实是文档侧的一次"预对齐":

  1. 文档 PR 阶段:AvailableFrom标注为main版本 + 0.0.1(本文流程);
  2. 合入main后,正式发布时由 set-version.ts 把所有包的package.json抬升到同一新版本(例如4.0.469),它内部会跳过 featured 模板目录、按shouldReleasePackage策略过滤不需要发布的包(策略来自packages/studio-shared/src/release-package-policy),随后调用ensure-correct-version.ts重建version.ts并校验产物;
  3. set-version.ts末尾还会git add . && git commit -m "v<version>"并打 tag——AvailableFrom组件指向的正是这类v<version>tag,形成"文档徽标 → Release tag"的闭环。

换句话说:如果文档 PR 把AvailableFrom写成了main上的旧版本号,发布完成后该徽标会指向一个"早于功能实际可用"的 Release,语义错误且难以追溯;如果写成更大的未来版本,Release 链接在发布时点又暂时 404。"main+ 0.0.1" 恰好是两边都不出错的唯一取值。

五、实践要点小结

  • 唯一事实来源packages/core/src/version.tsVERSION常量(由 ensure-correct-version.ts 在发布时自动生成),不要手工编辑它;
  • 取值公式:下一个补丁版本 =mainVERSIONpatch 位 + 1,前提是 Remotion 当前按 patch 节奏迭代(见 .agents/skills/version/SKILL.md);
  • 改动边界:只改git diff origin/main...HEAD -- packages/docs命中的AvailableFrom v="...",其余条目一律不动;
  • 格式容错v前缀可加可不加,组件源码会自动剥离;v为空会在渲染/构建时抛错;
  • 渲染语义v值会直接拼进 GitHub Release 链接(见 AvailableFrom.tsx 中href的构造),所以取值必须对应一个真实存在的版本。

这套流程把"文档标注"与"版本发布"两个本来异步的动作精确对齐:文档 PR 提前把版本号预置到下一个补丁版本,发布脚本随后把版本号推到同一值,最终读者在文档中看到的版本徽标与 Release tag 严格一一对应。

【免费下载链接】remotion🎥 Make videos programmatically with React项目地址: https://gitcode.com/GitHub_Trending/re/remotion

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/7 23:41:51

mayavi+PyQt5集成实战:从环境搭建到三维可视化

如果你打算在 Python 里同时做三维科学可视化和桌面端交互界面&#xff0c;那“mayavi PyQt5”这个组合你一定绕不开。mayavi 负责把等值面、体渲染、流线这些复杂三维内容快速画出来&#xff0c;PyQt5 负责外面的窗口、控件和交互逻辑&#xff0c;两者拼在一起&#xff0c;就…

作者头像 李华
网站建设 2026/9/7 23:41:26

基于DDPG的多动作并行异步强化学习在选矿智能决策中的应用

简介&#xff1a;这是一篇来自《控制与决策》期刊的学术论文PDF&#xff0c;标题为“基于多动作并行异步深度确定性策略梯度的选矿运行指标决策方法”&#xff0c;面向工业智能、强化学习及流程工业自动化领域的研究者和工程师。论文针对深度确定性策略梯度&#xff08;DDPG&am…

作者头像 李华
网站建设 2026/9/7 23:40:50

低照度图像增强实战:从Retinex到Zero-DCE算法解析与复现

简介&#xff1a;低照度环境下的图像常因光线不足导致RGB特征信息匮乏&#xff0c;目标检测时特征提取与识别定位的难度随之上升。这份代码资料正是针对此类痛点&#xff0c;将传统算法与深度学习两类低照度增强手段合并整理&#xff0c;涵盖Retinex、EnlightenGAN、Zero-DCE等…

作者头像 李华
网站建设 2026/9/7 23:40:00

Kuikly跨端框架鸿蒙适配实践:从安全区到生命周期的分场景避坑指南

我今年接手了一个把存量Kotlin业务搬到鸿蒙上的活&#xff0c;第一反应是“鸿蒙原生ArkTS再写一遍”工作量太大&#xff0c;团队最后定了Kuikly做跨端框架。忙完几个大版本迭代后&#xff0c;我想把这几个月在分场景适配上的心得系统整理一下&#xff0c;尤其是屏幕安全区、软键…

作者头像 李华
网站建设 2026/9/7 23:39:49

个人云服务器建站+备案+小程序域名通用部署文档(脱敏版)

一、项目基础信&#xff08;全脱敏通用模板&#xff09;主域名&#xff1a;个人自定义主域名WWW子域名&#xff1a;www.自定义主域名服务器&#xff1a;阿里云ECS 华北节点公网IP&#xff1a;xxx.xxx.xxx.xxxICP备案号&#xff1a;个人备案专属编号公安备案数据码&#xff1a;x…

作者头像 李华
网站建设 2026/9/7 23:39:46

中国250米分辨率FVC数据集解析与应用指南

1. 项目背景与数据集价值植被覆盖度&#xff08;Fractional Vegetation Cover, FVC&#xff09;是衡量地表植被生长状况的核心指标之一&#xff0c;在生态监测、农业估产、气候变化研究等领域具有不可替代的作用。这套2000-2025年中国逐年250米分辨率FVC数据集的发布&#xff0…

作者头像 李华