
Backstage v1.22.0-next.1 预发布版解读语言选择器、GKE 集群链接与依赖清理【免费下载链接】backstageBackstage is an open framework for building developer portals项目地址: https://gitcode.com/GitHub_Trending/ba/backstage本篇基于 Backstage 官方仓库中的 v1.22.0-next.1 changelog 撰写带你逐条拆解这个预发布版本中的具体变更包括backstage/plugin-user-settings语言选择器的用户界面改进本版本唯一的 Minor Changes、Kubernetes 插件 GKE 集群链接的authuser参数、Azure 站点标签展示、AWS 账户资源标签以及横跨多个包的依赖清理与基础库升级。读完本文你将理解 Backstagenext预发布版本的演进机制并能对照源码定位每个变更的实际实现与测试依据。版本概况next 预发布版在版本演进中的角色Backstage 采用「next 预发布 正式发布」的双轨发布流程。v1.22.0-next.1是 v1.22.0 正式发布之前的第二个候选快照next.0、next.1、next.2… 依次迭代其变更内容会在后续的正式版 changelog如 v1.22.0-changelog.md中被合并。这一机制由仓库根目录的 changesets 工具链驱动相关校验与生成脚本位于 scripts/verify-changesets.js 与 scripts/create-release-changelog.js。本版本共涉及 100 余个包绝大部分为「Updated dependencies」的连锁升级实质性变更带 commit hash 的具体改动主要集中在 6 处下文逐一剖析。语言选择器改用本地语言名显示Minor Changesbackstage/plugin-user-settings0.8.0-next.1是本版本唯一包含 Minor Changes 的包变更号为56b2fb0Updated the user settings selector to use a select component that displays native language names instead of language codes if possible.即用户设置页中的语言切换组件在条件允许时将语言代码如en、de改为以本地语言名native language names如English、Deutsch展示。源码实现原理核心实现位于 UserSettingsLanguageToggle.tsxconst getLanguageDisplayName (language: string) { try { const names new Intl.DisplayNames([language], { type: language, }); const languageDisplayName names.of(language); return languageDisplayName ? capitalize(languageDisplayName) : language; } catch (err) { return language; } };实现要点使用 Web 标准的Intl.DisplayNamesAPI以目标语言本身作为区域参数[language]从而返回该语言在母语中的自称endonym例如de显示为Deutsch、sv显示为Svenska借助组件内定义的capitalize工具第 64 行将首字母大写try/catch兜底当运行环境不支持该 API 或传入无效语言标签时回退显示原始语言代码保证组件不会因格式化失败而崩溃。交互行为与测试验证组件通过appLanguageApiRef获取语言 API第 69 行并使用useObservable订阅language$()以响应语言切换语言选项最终渲染为backstage/core-components的Select下拉组件。值得注意的是当可用语言数量 1时组件直接返回null第 80-82 行因此单语言实例不会出现多余控件。对应的测试 UserSettingsLanguageToggle.test.tsx 覆盖了三个场景单语言不渲染、多语言正常渲染、语言切换事件处理其中 mock 语言列表即为[en, de]。这与 changelog 中backstage/plugin-user-settings同时升级core-plugin-api、core-components等依赖的 Patch Changes 相互印证——新 UI 依赖底层组件与 API 的同步升级。GKE 集群链接增加 authuser 参数Kubernetes 插件backstage/plugin-kubernetes0.11.4-next.1与backstage/plugin-kubernetes-react0.2.1-next.1共享同一变更d5d2c67Addauthusersearch parameter to GKE cluster link formatter in k8s plugin. Thanks to this, people with multiple simultaneously logged-in accounts in their GCP console will automatically view objects with the same email as the one signed in to the Google auth provider in Backstage.这解决了多账号登录 GCP 控制台时的典型痛点当你在 Google Cloud Console 中同时登录了多个账号时页面会默认使用其中一个账号的上下文导致通过 Backstage 跳转查看 GKE 资源时看不到与登录身份一致的对象。通过携带authuser查询参数控制台会直接切换或默认匹配到指定账号的视角。源码实现核心实现在 GkeClusterLinksFormatter.ts 的formatClusterLink方法中const result new URL(path, basePath); result.searchParams.set(project, args.projectId); if (this.googleAuthApi) { const profile await this.googleAuthApi.getProfile({ optional: true }); if (profile?.email) { result.searchParams.set(authuser, profile.email); } } return result;关键点GkeClusterLinksFormatter构造时注入googleAuthApiProfileInfoApi在 index.ts 中由deps.googleAuthApi组装通过getProfile({ optional: true })获取已登录 Google auth provider 的用户邮箱optional: true表示无 profile 时静默返回不会抛错仅当存在邮箱时才追加authuser参数避免无意义地污染链接该 Formatter 对dashboardParameters有严格校验必须提供字符串类型的projectId、region、clusterName否则分别抛出对应错误第 38-56 行同时内置了资源类型映射deployment、pod、ingress、service、horizontalpodautoscaler其中ingress与pod跳转详情页其余跳转概览页。测试验证测试文件 GkeClusterLinksFormatter.test.ts 对本次变更做了针对性验证未提供 profile email 时断言url.searchParams.has(authuser)为false第 246、253 行提供邮箱时断言url.searchParams.get(authuser)等于该邮箱第 261 行并覆盖了缺失dashboardParameters、缺失projectId、region、clusterName的各类报错路径。Azure 站点概览组件展示站点标签backstage/plugin-azure-sites0.1.18-next.1的变更a31f688Show Azure site tags inEntityAzureSitesOverviewWidget.该变更让实体概览小部件EntityAzureSitesOverviewWidget在展示 Azure 站点信息时附带显示站点标签tags便于开发者在 Backstage 软件目录中直接查看 Azure 站点的元数据标记而无需跳转 Azure Portal。需要说明的是该插件的源码目录plugins/azure-sites未包含在当前仓库树中本文仅以 changelog 所述行为为准其标签数据的读取与渲染细节可结合该插件在其所在版本仓库中的实现进一步查阅。AWS 账户资源补充状态与邮箱标签backstage/plugin-catalog-backend-module-aws0.3.3-next.1的变更22e88d0Added status and e-mail as labels to the AWS Account Resource.即在 AWS Account 资源entity上新增status账户状态与email账户邮箱标签方便软件目录中按这些维度过滤、搜索与展示 AWS 组织下的云账户。源码佐证在 AwsOrganizationCloudAccountProcessor.ts 中可以看到对应的常量定义const ACCOUNT_EMAIL_ANNOTATION amazonaws.com/account-email; const ACCOUNT_STATUS_LABEL amazonaws.com/account-status;其测试用例 AwsOrganizationCloudAccountProcessor.test.ts 断言生成 entity 后包含amazonaws.com/account-email: aws-test-accountbackstage.io与amazonaws.com/account-status: active等标签同时覆盖了邮箱/状态为空的边界场景第 135-139 行与 changelog 描述一一对应。该变更使 AWS 账户的运维信息状态、联系方式以标准化注解/标签形式进入 Backstage 的软件目录数据模型可被目录的过滤、权限与搜索能力直接消费。依赖清理移除历史包袱本版本在多个包中移除了不再需要的依赖属于典型的「瘦身」型维护变更号涉及包移除内容6878b1dbackstage/core-components0.13.10-next.1不必要的history与immer依赖6878b1dbackstage/core-plugin-api1.8.2-next.0不必要的i18next依赖7acbb5abackstage/cli-node、backstage/config-loader、backstage/create-app、backstage/repo-tools、backstage/plugin-scaffolder-backend-module-confluence-to-markdownmock-fs开发依赖从源码结构看core-components与core-plugin-api的变更集中在依赖清单精简前者不再直接依赖history路由相关处理已由内部封装承担与immer不可变更新逻辑已替换后者不再直接依赖i18next国际化接入通过useTranslationRef等自有封装完成UserSettingsLanguageToggle.tsx 中即使用了来自core-plugin-api的useTranslationRef。移除mock-fs则意味着这些包的测试从文件系统 mock 转向其他方案减小了开发依赖面。基础依赖升级矩阵本次 next 版本以backstage/core-plugin-api1.8.2-next.0为前端基线、backstage/backend-plugin-api0.6.9-next.1为后端基线带动整棵依赖树升级。值得留意的稳定版本不带next后缀即已定版包括backstage/config1.1.1backstage/errors1.2.3backstage/theme0.5.0backstage/types1.1.1backstage/catalog-model1.4.3backstage/integration1.8.0前端侧几乎所有插件catalog、scaffolder、search、techdocs、home、org 等都同步升级了core-plugin-api、core-components、core-app-api后端侧则以backend-common0.20.1-next.1与backend-plugin-api0.6.9-next.1为共同底座。对于依赖方而言这些基础库的预发布版本升级通常伴随 API 兼容性约束建议在正式版发布后再随 keeping-backstage-updated 指南执行整体升级。如何跟进 next 预发布版本对于希望提前体验或验证新行为的用户可以按以下方式操作阅读完整变更清单以本仓库 docs/releases 目录下的 changelog 为准关注带 commit hash 的条目Minor / Patch 的具体改动忽略纯依赖升级条目安装预发布版本在 Backstage 应用根目录通过 Yarn 指定next版本号安装例如将backstage/plugin-user-settings固定为0.8.0-next.1其余包按 changelog 中的依赖矩阵对齐重点验证本次实质变更升级后重点回归语言切换组件的显示效果Intl.DisplayNames在不同浏览器的兼容性、Kubernetes 插件跳转 GKE 控制台时的账号上下文authuser参数、Azure 站点标签与 AWS 账户标签在软件目录中的展示等待正式版next系列通常仅作为发布候选使用正式版发布后即应切换到稳定版本号避免长期依赖预发布版本。综上v1.22.0-next.1 是一个「用户界面体验优化 云厂商链路适配 依赖清理」并行的预发布版本语言选择器借力Intl.DisplayNames提升了多语言用户的使用体验GKE 链接的authuser参数解决了多云账号场景下的跳转错位问题AWS/Azure 相关改动则让云资源元数据在软件目录中更完整、更可检索。对照仓库源码中的实现与测试可以快速确认这些变更的行为边界为升级决策提供依据。【免费下载链接】backstageBackstage is an open framework for building developer portals项目地址: https://gitcode.com/GitHub_Trending/ba/backstage创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考