Bilibili-Evolved 发版流程实战指南正式版与预览版的双轨发布机制详解【免费下载链接】Bilibili-Evolved强大的哔哩哔哩增强脚本项目地址: https://gitcode.com/gh_mirrors/bi/Bilibili-Evolved本篇技术指南以 doc/release-checklist.md 为骨架系统拆解 Bilibili-Evolved哔哩哔哩增强脚本的官方发版流程从 change log 编写、版本号更新与 tag 管理、文档生成到带 tag 推送与跨浏览器油猴脚本实测的完整闭环。读完本文你将掌握如何按仓库既有约定完成一次正式版或预览版的发布理解版本号与 tag 如何被构建系统消费、更新日志与投喂文档为何必须同步更新并了解构建产物bilibili-evolved.user.js/bilibili-evolved.preview.user.js与 CDN 元信息之间的注入关系。一、为什么需要正式版 预览版双轨发布Bilibili-Evolved 面向的是高频变化的 B 站页面环境功能组件数量庞大registry/lib下覆盖动态、直播、样式、工具、视频等几十个功能目录任何一个组件在新版 B 站页面上失效都可能影响大量用户。为此仓库维护了一套预览版先行验证、正式版稳定兜底的双轨发布策略其全部约定浓缩在 doc/release-checklist.md 中正式版stable面向全体用户强调稳定。发布前需完整走完 changelog、文档、投喂页、tag 推送和浏览器实测等全部环节。预览版preview面向愿意抢先体验新功能的用户流程精简为版本号 → 文档 → 推送 → 实测四步用于提前暴露问题。两条发布通道在构建与元数据层面是彼此独立的src/client/bilibili-evolved.meta.json定义了正式版的油猴脚本元信息src/client/bilibili-evolved.preview.meta.json则定义了预览版其name为Bilibili Evolved (Preview)描述为可以抢先体验新功能两个文件分别注入updateURL/downloadURL占位符[altCdn.stableClient]/[altCdn.previewClient]在构建时由 CDN 配置替换为实际下载地址。二、正式版发布六步完整流程正式版发布是仓库的最高规格发布动作严格按照 doc/release-checklist.md 的正式版清单执行编写 change log在仓库根目录的 CHANGELOG.md 顶部新增对应版本条目。从现有条目看格式约定为## v2.11.2版本号 发布日期yyyy-MM-dd正文按✨新增、修复、☕开发者相关等分类组织修复项通常附带 issue 号如#5643或 PR 链接与贡献者署名例如修复自定义顶栏搜索栏候选项点击时焦点丢失的问题. (#5643)。更新版本号打上 tag版本号需与 CHANGELOG 条目一致如v2.11.2并通过 git tag 标记。这一步至关重要——构建系统会直接消费 git tag 信息详见下文四、版本号与 tag 如何被构建系统消费。更新 donate.md同步更新 doc/donate.md 的投喂记录表时间、用户名、单号后 4 位、金额该表是手动维护的文件头部亦有列表是手动维护的, 可能无法及时更新的说明。生成文档运行文档生成任务产出功能清单等文档产物见下文五、生成文档与配套脚本。带 tag 推送git push时带上 tag如git push --tags确保远端仓库与发布产物关联。测下 Firefox Violentmonkey在 Firefox 浏览器搭配 Violentmonkey 扩展进行实测这是正式版发布前最后一道质量关卡验证油猴脚本在目标环境下的安装、更新与运行。三、预览版发布精简四步流程预览版是正式版的前置验证通道doc/release-checklist.md 为其保留了最核心的发布动作更新版本号打上 tag预览版版本号在正式版基础上追加-preview后缀。以 CHANGELOG.md 为例v2.11.2-preview条目明确写明包含 v2.11.2 的所有更新内容即预览版在正式版尚未定型时先行发布随后正式版再跟进两条版本线存在先后与包含关系。生成文档与正式版相同的文档生成步骤。带 tag 推送同上tag 需随代码一起推送。测下 Edge Tampermonkey预览版在 Edge 浏览器搭配 Tampermonkey 扩展实测。与正式版的Firefox Violentmonkey形成浏览器 × 油猴扩展的交叉覆盖矩阵从而在两条通道上分散验证不同的运行环境组合。四、版本号与 tag 如何被构建系统消费发布清单中打上 tag并非形式动作。从源码看webpack 构建时通过child_process.execSync直接读取 git 信息见 webpack/compilation-info/git.tsbranchgit rev-parse --abbrev-ref HEAD读取当前分支nearestTaggit describe --abbrev0 --tags --always读取最近一次 tagversionWithTaggit describe --tags --always读取带提交距离的完整版本描述。这些信息随后被注入到 webpack/webpack.config.ts 的webpack.DefinePluginwebpackGitInfo与运行时编译信息webpack/compilation-info/runtime.ts中。因此如果发版时没有先打 tag构建产物中的版本信息就会缺失或错误这解释了清单为何把打上 tag列为固定步骤。版本信息在运行时还被用于组件兼容性校验src/core/version.ts 定义了Version类仅接受^[\d\.]$形式的版本串与isFeatureAcceptable检测逻辑——当加载的第三方功能组件声明了coreVersion时会与当前本体的meta.compilationInfo.version比较版本过低则拒绝加载。这意味着发版版本号的规范与否直接关系到后续组件生态的兼容判定。五、生成文档与配套脚本生成文档步骤对应的实际命令在 package.json 的 scripts 中均有定义脚本命令作用build-corewebpack --config ./webpack/webpack.prod.ts --bail编译本体正式版 预览版双产物build-featureswebpack --config ./registry/webpack/all.ts --bail编译功能组件包build-docstsx dev-tools/feature-docs/index.ts从功能元数据生成文档对应doc/features/下的features.md/features.json、pack.md/pack.json等产物donate-tabletsx dev-tools/donate-table/index.ts从投喂数据生成表格type/linttsc -p tsconfig.type-check.json --noEmit/ eslint类型检查与代码规范校验发版流程中的生成文档即对应build-docstsx dev-tools/feature-docs/index.ts它遍历registry/lib下各功能的元数据与index.md汇总生成功能文档确保每次发版后文档与代码同步。六、构建产物与 CDN 元信息注入发布动作最终产出两个油猴脚本文件。从 webpack/webpack.prod.ts 可以看到生产构建同时输出两个目标正式版dist/bilibili-evolved.user.js使用 src/client/bilibili-evolved.meta.json 的元信息预览版dist/bilibili-evolved.preview.user.js复用 webpack/webpack.dev.ts 的配置仅改写output.filename与mode使用 src/client/bilibili-evolved.preview.meta.json 的元信息。两个 meta 文件中的updateURL/downloadURL是形如[altCdn.stableClient]/[altCdn.previewClient]的占位符由 webpack/webpack.config.ts 中的getBanner与replaceVariables在生成油猴脚本头// UserScript块时从运行时编译信息webpack/compilation-info/runtime.ts其数据源自webpack/cdn下的 CDN 配置替换为真实链接。也就是说发版时的 tag 与 CDN 配置共同决定了用户从哪个地址拉取更新。如果需要更换脚本 CDNdoc/cdn.md 给出了完整操作在webpack/cdn/下新建配置对象并在index.ts中把altCdn指向新配置字段含owner、host、stableClient、previewClient、library各第三方库链接、logo、root等然后重新编译并复制产物内容到油猴新建脚本保存后续更新只需git pull后重新编译。七、发布自检清单总结综合 doc/release-checklist.md 与仓库实现可将完整发版流程归纳为下表便于发布前逐项确认检查项正式版预览版关键依据编写 change log✅ 必须随正式版条目包含CHANGELOG.md更新版本号并打 tag✅✅webpack/compilation-info/git.ts更新 donate.md✅不要求doc/donate.md生成文档✅✅pnpm build-docspackage.json带 tag 推送✅✅git tag 随提交推送浏览器 × 扩展实测Firefox ViolentmonkeyEdge Tampermonkey发布清单约定产物dist/bilibili-evolved.user.jsdist/bilibili-evolved.preview.user.jswebpack/webpack.prod.ts一次规范的发版本质上是代码、tag、文档、投喂页、构建产物、运行环境实测六要素的同步对齐tag 决定构建产物中的版本身份文档与 changelog 决定发布信息的完整度而不同浏览器 × 油猴扩展的交叉实测则为脚本在 B 站多变页面环境下的稳定性兜底。预览版作为正式版的前置通道用精简流程换取更快的反馈循环正式版则用完整流程保障全体用户的稳定体验。【免费下载链接】Bilibili-Evolved强大的哔哩哔哩增强脚本项目地址: https://gitcode.com/gh_mirrors/bi/Bilibili-Evolved创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考