Backstage v1.11.0-next.2 变更解读:后端系统 API 重构、tRPC 支持与新增插件 📅 发布时间:2026/9/12 5:46:48 👁 浏览次数: Backstage v1.11.0-next.2 变更解读后端系统 API 重构、tRPC 支持与新增插件【免费下载链接】backstageBackstage is an open framework for building developer portals项目地址: https://gitcode.com/GitHub_Trending/ba/backstage本篇指南基于 Backstage 官方仓库的docs/releases/v1.11.0-next.2-changelog.md发布记录系统梳理 v1.11.0 第二个候选版本next.2中的破坏性变更、新包新插件、性能优化与修复项。读者通过本文可以完整掌握这次版本演进对backstage/backend-app-api、backstage/backend-plugin-api等核心包的影响面理解新版后端系统Backend System的 API 走向并据此完成自身应用的升级改造。版本概览一次面向后端系统的集中收敛v1.11.0-next.2 是一次以后端系统Backend System新架构为中心的版本多个核心包同时发布了 Minor 破坏性变更并引入了多个 0.1.0 全新包与插件。下表汇总了本版本中带有实质变更Minor / 有实际代码变动的 Patch的包包名版本变更类型核心内容backstage/backend-app-api0.4.0-next.2Minor破坏性类型重命名、*ServiceFactory导出、type: pem证书选项、关闭信号处理迁移backstage/backend-plugin-api0.4.0-next.2Minor破坏性addShutdownHook签名、pluginId、LogMeta移除、BackendFeature不透明化backstage/backend-dev-utils0.1.0-next.0新包后端开发工具集对标前端的backstage/dev-utilsbackstage/catalog-model1.2.0-next.1Minor新增 tRPC API 类型backstage/eslint-plugin0.1.0-next.0新包面向 Backstage 项目的通用 ESLint 规则集backstage/plugin-adr0.4.0-next.2MinorAdrSearchResultListItem改为搜索结果扩展backstage/plugin-api-docs0.9.0-next.2Minor新增 tRPC API 定义组件backstage/plugin-catalog-backend-module-msgraph0.5.0-next.2Minor用户加载改为分页查询性能提升backstage/plugin-entity-validation0.1.0-next.0新插件实体校验 UIbackstage/plugin-graphql-voyager0.1.0-next.0新插件GraphQL Voyager 可视化工具backstage/plugin-lighthouse0.4.0-next.2Minor破坏性API 类型迁移至lighthouse-commonbackstage/plugin-lighthouse-backend0.1.0-next.0新插件定时执行 Lighthouse 审计backstage/plugin-lighthouse-common0.1.0-next.0新包Lighthouse API 实现与共享类型backstage/plugin-scaffolder-react1.1.0-next.2Minor校验器递归化、OngoingTask页面backstage/plugin-sentry0.5.0-next.2Minor支持按触发时间过滤问题backstage/cli0.22.2-next.1Patch实验性EXPERIMENTAL_BACKEND_START其余大量包如catalog-backend、auth-backend、techdocs-backend、各类events-backend-module-*等均为跟随上游依赖的常规升级本文不再逐一展开其依赖关系可参见 docs/releases/v1.11.0-next.2-changelog.md。后端系统核心 API三组破坏性变更本次版本中最需要关注的是backstage/backend-app-api与backstage/backend-plugin-api的一组命名与签名调整。它们直接影响到所有使用新后端系统编写插件、模块或自定义后端的代码。backstage/backend-app-api0.4.0-next.2该包在本版本中有三项明确的破坏性变更RootHttpRouterConfigureOptions更名为RootHttpRouterConfigureContext同时删除了不再使用的ServiceOrExtensionPoint类型。命名从选项改为上下文更准确地表达了该类型是注入给根路由配置回调的运行时上下文而非普通选项对象。*Factory导出统一重命名为*ServiceFactory。例如原先导出的configFactory现在以configServiceFactory名称导出。这是为了让命名与服务工厂Service Factory这一后端系统核心概念严格对齐——工厂不再只是配置而是明确的服务提供者。这一重命名同时影响backstage/backend-defaults该包本版本改用新的*ServiceFactory导出与backstage/backend-test-utilsmockServices相应更新并移除了所有 mock 服务的ref字段。HttpServerCertificateOptions的证书类型语义收紧当同时指定key和cert时type字段必须为pem而不是之前的plain。backstage/backend-common中createHttpServer的相关调用也随之更新为使用新的type: pem。此外该包还包含若干不破坏兼容性的调整关闭信号处理器迁移SIGTERM/SIGINT等关闭信号的处理不再由生命周期服务lifecycle service安装而是作为后端实例backend instance的一部分安装并会显式触发进程退出。这让进程关闭行为更可预期、更可控。配置归属调整config与rootHttpRouter两个服务的选项被移入各自的工厂factory内部即选项在工厂创建处声明而不是在服务注册时统一传递。数据库工厂在开发模式下会传递恢复数据库状态所需的依赖。backstage/backend-plugin-api0.4.0-next.2该包同样包含四项破坏性变更addShutdownHook参数顺序调整生命周期服务被拆分为两个钩子lifecycle与rootLifecycle且addShutdownHook的第一个参数变为钩子函数本身第二个参数才是选项对象。这使签名与addStartupHook保持一致。createBackendPlugin的 ID 参数从id改为pluginId以与createBackendModule的参数命名对齐。在当前仓库的 packages/backend-plugin-api/src/wiring/createBackendPlugin.ts 中可以看到pluginId需要匹配ID_PATTERN仅允许字母、数字与连字符且以字母开头不匹配时会给出警告或直接报错最终被写入BackendFeatureConfig。因此升级时只需把createBackendPlugin({ id: x })改写为createBackendPlugin({ pluginId: x })。LogMeta类型被JsonObject取代日志元数据不再使用专用类型直接使用通用 JSON 对象减少了类型体系中的冗余。backend-app-api、backend-common、backend-test-utils等包同步更新了LogMeta的使用处。BackendFeature变为不透明类型opaque type外部无法再直接访问其内部结构。同时所有不透明类型标记统一使用带命名空间的$type属性如$type: backstage/BackendFeature风格并移除了未使用的TypesToServiceRef类型。新包与新增插件扩大后端开发与工具生态backstage/backend-dev-utils0.1.0-next.0本版本引入了一个新的后端开发工具包定位与前端的backstage/dev-utils对应。它为后端开发场景如数据库状态恢复、开发环境辅助逻辑提供统一工具入口backend-common的DatabaseManager.forPlugin也在本版本开始接收额外的服务依赖参数现有代码无需改动即可继续工作。backstage/eslint-plugin0.1.0-next.0与 CLI 规则收敛新增了面向 Backstage 项目的 ESLint 插件包含一组通用规则。backstage/cli将原先的若干 monorepo lint 规则替换为该插件的规则packages/app与create-app模板中的相关配置如import/no-extraneous-dependencies也同步精简。如果你的项目直接使用了这些旧规则升级后需要切换到backstage/eslint-plugin提供的等价规则。backstage/plugin-entity-validation0.1.0-next.0全新的实体校验 UI 插件用于在界面上交互式校验 Catalog 实体entity定义是否符合规范。它依赖catalog-model、catalog-client与plugin-catalog-react等核心包为开发者提供即时的实体文件校验反馈。backstage/plugin-graphql-voyager0.1.0-next.0将 GraphQL Voyager交互式 GraphQL Schema 可视化工具封装为 Backstage 插件并导出其运行所需的 API 与组件方便在 Portal 中直接浏览与探索 GraphQL 服务结构。Lighthouse 插件族lighthouse-backendlighthouse-common本版本将 Lighthouse 能力拆分为三个包backstage/plugin-lighthouse-common0.1.0-next.0承载 Lighthouse API 实现与全部共享类型backstage/plugin-lighthouse-backend0.1.0-next.0新增的后端插件用于按计划定时执行 Lighthouse 审计依赖backend-tasks的任务调度能力backstage/plugin-lighthouse0.4.0-next.2前端插件要求使用新的lighthouse-common包。需要特别注意的是前端plugin-lighthouse本次为破坏性变更以下类型全部从plugin-lighthouse迁移到了plugin-lighthouse-common迁移后需要更新 import 来源Audit、AuditBase、AuditCompleted、AuditFailed、AuditRunning、FetchError、LASListRequest、LASListResponse、LighthouseApi、LighthouseCategoryAbbr、LighthouseCategoryId、LighthouseConfigSettings、LighthouseRestApi、TriggerAuditPayload、Website、WebsiteListResponse。Catalog 与 API 文档引入 tRPC 支持backstage/catalog-model1.2.0-next.1新增了tRPC API 类型backstage/plugin-api-docs0.9.0-next.2则随之新增了一个tRPC API 定义组件widget。这意味着开发者可以将 tRPC 服务的 API 定义直接注册进 Backstage 的 API 目录并在 API 文档页面中以 tRPC 形式渲染扩展了 api-docs 对 API 描述语言的支持面OpenAPI、AsyncAPI、GraphQL 之外再添 tRPC。MsGraph 目录加载分页查询替代逐用户调用backstage/plugin-catalog-backend-module-msgraph0.5.0-next.2针对通过组成员关系加载用户的场景做了明显的性能优化用户数据改为分页查询一次性加载不再为每个用户额外发起一次请求来获取其 Profile默认页大小从 100 提升到999以减少对 Microsoft Graph API 的调用次数修复了读取app-config.yaml中user.select字段时的配置解析 bug。从当前仓库的测试可以印证这一实现在 plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.test.ts 中多次断言请求使用top: 999的分页参数。需要注意的是按 changelog 说明加载用户头像仍然需要逐用户调用这是当前实现保留的额外开销。Scaffolder校验器递归化与新任务页backstage/plugin-scaffolder-react1.1.0-next.2有两处值得关注的变化createAsyncValidators重构为递归实现确保在嵌套 schema如嵌套在对象或数组中的字段中自定义校验器也能被正确调用。当前仓库的 plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.ts 中可以看到内部的validate函数会以pathPrefix和当前层级对象为参数递归遍历表单数据对每一层 schema 应用CustomFieldValidator并合并出层级化的FormValidation结果。scaffolder/next 新增了简单的OngoingTask页面用于展示进行中的任务状态。同时rjsf的 v5 依赖被升级到 5.1.0plugin-scaffolder与plugin-scaffolder-react同步更新。搜索结果列表项全面扩展化本版本对搜索结果的渲染方式做了一轮统一改造涉及plugin-catalog、plugin-explore、plugin-techdocs、plugin-search-react、plugin-adr等多个包ListItem包装组件被移入SearchResultListItemExtension所有以扩展形式导出的*SearchResultListItems不再自带li列表项包装以保证列表只包含列表元素。升级提示如果你实现了自定义结果列表项建议移除列表项包装避免产生嵌套的li元素。plugin-adr的AdrSearchResultListItem变为搜索结果扩展后其result、rank、highlight属性变为可选当作为扩展渲染时。此外backstage/plugin-search-backend改进了查询失败时的响应内容失败时返回错误消息本身而非仅返回错误对象类型便于前端展示和排查。其他值得注意的修复与改进plugin-sentry0.5.0-next.2新增按问题触发时间time range过滤 issue 的选项。plugin-kubernetes-backendKubernetes proxy 端点现在接受非 JSON 的 content type。plugin-tech-radar0.6.1-next.1弃用RadarEntry.url改用RadarEntry.links数组可同时提供多个链接。迁移方式为将url字段改写为links: [{ url, title }]形式。plugin-vault当 Vault API 返回非成功 HTTP 响应时向前端界面暴露更多上下文与细节。plugin-azure-sites修复了站点启动/停止问题issue #15904与 UI 加载问题issue #15907。plugin-search调整搜索弹窗各标签页颜色以改善对比度为标签包装组件补充 aria label并移除Tab组件上的disableRipple以改善键盘导航指示。core-components移动端侧边栏的导航项现在带 aria label。plugin-events-nodeEventParams增加类型参数便于实现更整洁的事件处理。plugin-catalog-backend-module-gitlab配置中统一使用instance一词指代单个 GitLab API 主机。工程化与 CLI实验性后端启动模式backstage/cli0.22.2-next.1为后端包的package start命令新增实验模式通过设置环境变量EXPERIMENTAL_BACKEND_START启用用于在开发期提前体验新版后端的启动方式。backstage/codemods0.1.43-next.0将commander调整为常规依赖。backstage/repo-tools0.1.2-next.0未声明backstage.role的包将被忽略避免误处理非 Backstage 包。backstage/backend-test-utilsmockServices.config()增加显式返回类型mockServices.rootLogger选项收敛为单一level选项。升级建议结合本次 changelog升级到 v1.11.0 系列next.2时可按下述顺序自查后端系统代码全局搜索createBackendPlugin({ id:改为pluginId:将configFactory等旧工厂名改为*ServiceFactory命名核对addShutdownHook的形参顺序如有自定义 HTTPS 证书配置将type: plain改为type: pemRootHttpRouterConfigureOptions引用改为RootHttpRouterConfigureContext。Lighthouse 用户将涉及上述 17 个类型Audit、LighthouseApi等的 import 从plugin-lighthouse迁移到plugin-lighthouse-common需要定时审计时接入新的plugin-lighthouse-backend。自定义搜索结果项移除列表项包装避免嵌套liAdrSearchResultListItem的result/rank/highlight可不再必传。Tech Radar 数据将url迁移到links数组。ESLint 规则将旧的 monorepo 规则替换为backstage/eslint-plugin提供的规则。完整的逐包变更与依赖关系可以查阅 docs/releases/v1.11.0-next.2-changelog.md后端系统新 API 的演进方向可结合 packages/backend-app-api 与 packages/backend-plugin-api 的源码与report.api.md进一步对照验证。【免费下载链接】backstageBackstage is an open framework for building developer portals项目地址: https://gitcode.com/GitHub_Trending/ba/backstage创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考