资讯动态

Backstage v1.44.0 版本特性全解析:Scaffolder 3.0 重构、新前端测试范式与 BUI 设计系统演进

发布时间:2026/9/13 19:21:30 来源:尧图企业网站定制
Backstage v1.44.0 版本特性全解析Scaffolder 3.0 重构、新前端测试范式与 BUI 设计系统演进【免费下载链接】backstageBackstage is an open framework for building developer portals项目地址: https://gitcode.com/GitHub_Trending/ba/backstage导读本文基于 Backstage 官方仓库的 v1.44.0 发布说明系统解读该版本中的破坏性变更、新增能力与升级路径包括 Scaffolder 后端插件的 3.0 大版本重构、renderTestApp新测试工具、外部服务间认证service-to-service auth自定义 token handler、Material UI 到 Backstage UI 的迁移助手插件以及 HTTP 服务器低层参数的配置化支持。读完本文你将明确 v1.44.0 升级时的必改项如全局 CSS 引入、scaffolderActionsExtensionPoint导入路径迁移并掌握新特性的具体用法与源码级实现依据。一、Scaffolder Backend 3.0大版本重构与扩展点迁移v1.44.0 最大的变化集中在 Scaffolder 后端插件。该版本正式进入 3.0核心动作是清理历史遗留类型并开始为后续的架构重构铺路。破坏性变更移除过期类型与TaskBroker接口收紧移除的已废弃类型CreateWorkerOptions、CurrentClaimedTask、DatabaseTaskStore、TaskManager等旧类型与接口已被删除凡在自定义代码中引用这些符号的都需要同步迁移。TaskBroker接口新增必选方法TaskBroker接口现在要求实现cancel、recoverTasks、retry三个方法。如果你的自定义TaskBroker实现用不到这些能力可以直接用no-op函数() void占位。值得留意的是官方在发布说明中明确表示正在考虑彻底移除TaskBroker扩展点并希望社区通过 issue 反馈使用场景以支撑后续scaffolder-backend插件的重新架构re-architecture。scaffolderActionsExtensionPoint从/alpha晋升为主导出用于注册 scaffolder action 的扩展点此前位于 alpha 子路径现在移入主导出导入路径必须更新// before import { scaffolderActionsExtensionPoint } from backstage/plugin-scaffolder-node/alpha; // after import { scaffolderActionsExtensionPoint } from backstage/plugin-scaffolder-node;从仓库源码 plugins/scaffolder-node/src/extensions.ts 可以看到该扩展点的定义它通过createExtensionPoint创建扩展点 ID 为scaffolder.actions暴露addActions(...actions: TemplateActionany, any, any[]): void方法供各模块向 Scaffolder 注册模板动作export interface ScaffolderActionsExtensionPoint { addActions(...actions: TemplateActionany, any, any[]): void; } export const scaffolderActionsExtensionPoint createExtensionPointScaffolderActionsExtensionPoint({ id: scaffolder.actions, });批量弃用核心任务类型进入弃用倒计时为推进内部重构以下公开类型已被标记为DEPRECATION会在未来版本移除SerializedTaskSerializedTaskEventTaskBrokerTaskContextTaskBrokerDispatchOptionsTaskBrokerDispatchResultTaskCompletionStateTaskEventTypeTaskFilter/TaskFiltersTaskStatus官方在发布说明中呼吁如果这些类型支撑了你的自定义实现请通过 Discord 或 GitHub issue 反馈具体使用场景以便重构方案覆盖真实需求。二、Design SystemBackstage Theme 移除内置 CssBaseline破坏性变更UnifiedThemeProvider不再内置CssBaseline。升级后若你的 Backstage 实例界面“看起来坏了”样式错乱多半是因为缺少新版 Backstage UI 的全局 CSS。修复方式是在应用入口 packages/app/src/index.tsx 中显式导入import backstage/ui/css/styles.css;同时原本用于关闭 CssBaseline 的noCssBaselineprop 因变得冗余而被移除。实践建议升级到 v1.44.0 时应把全局 CSS 导入作为首个验证项尤其当应用自定义了主题或对基线样式有依赖时这一步不可省略。三、Design SystemBackstage UI 组件库更新新增Dialog组件与菜单虚拟化新增Dialog组件由社区贡献PR #31371为 Backstage UI 补充了对话框能力。菜单虚拟化Menu、MenuListBox、MenuAutocomplete、MenuAutocompleteListBox新增virtualized、maxWidth、maxHeight三个 props用于对长列表菜单进行虚拟化渲染解决大量选项时的性能问题。破坏性变更PasswordField、CSS Modules、ScrollArea与 Icon 移除新增PasswordField组件PR #31238TextField上的password与search类型被移除密码输入改为专用组件。从源码看PasswordField拥有独立的样式文件与 story 示例见 packages/ui/src/components/PasswordField/并提供了显示/隐藏密码的可见性切换控件bui-PasswordFieldVisibility。CSS Modules 化Backstage UI 组件样式全面改为 CSS Modules 加载生成类名不再使用纯 CSS。官方强调这通常不会带来实际问题但仍保留了各组件的固定类名如bui-PasswordField这类前缀方便开发者继续对实例进行样式定制。移除ScrollArea组件原因是它未达到项目的无障碍accessibility标准。移除 Icon 组件该组件对 tree-shaking 造成了阻碍官方建议在找到更优方案前直接使用remixicon/react的图标。四、前端测试范式变更renderTestApp取代extensions选项破坏性变更renderInTestApp的extensions选项被移除——它会导致新旧前端世界old/new frontend world被混用的混乱效果。若需要在测试应用中注入 extensions应改用新的renderTestApp工具。从仓库源码 packages/frontend-test-utils/src/app/renderTestApp.tsx 可以看到renderTestApp的 options 中重新引入了extensions?: ExtensionDefinitionany[]并在内部将传入的 extensions 组装进测试应用后渲染从而保证测试环境与生产环境使用一致的扩展机制// 用法示意 renderTestApp({ extensions: [...], });迁移要点凡是在插件测试里使用renderInTestApp({ extensions })的地方都需要改写为renderTestApp以确保扩展按新前端系统的规则加载。五、Backstage CLIYarn 插件自动检测与--entrypoint自定义入口Yarn 插件自动检测yarn new生成新包时新增了对 Backstage Yarn 插件的自动检测与支持当检测到插件已安装新包会自动为backstage/*依赖使用backstage:^版本范围省去手动维护版本号的麻烦。App 入口自定义--entrypointpackage start命令新增--entrypoint选项用于指定开发应用的自定义入口目录/文件。这在为同一插件维护多套 dev app如 stable 与 alpha 两个版本时尤其有用。以如下 dev 目录结构为例dev/ index.tsx alpha/ index.ts默认yarn package start以dev/为入口执行dev/index.tsxyarn package start --entrypoint dev/alpha以dev/alpha/为入口执行dev/alpha/index.ts。该能力在 packages/cli/CHANGELOG.md 的对应条目中有完整记录--entrypoint string也出现在 CLI 报告中packages/cli/cli-report.md。六、服务间认证新能力自定义外部 token handlerv1.44.0 新增了external token handler这一服务引用service ref允许采用方为发送到后端插件的授权 token 注册自定义处理器。也就是说如果你的组织在后端生态中已经有既定的服务到服务认证方式现在可以无缝地让 Backstage 也接受这些 token与既有对静态 token和JWKS 基础 token的支持形成互补。该能力对应的完整文档位于仓库 docs/auth/service-to-service-auth.md。这一特性对有存量微服务体系的团队意义重大——无需改造现有认证体系即可接入 Backstage 后端插件。七、新插件ThemerMUI v5 主题 → BUI 迁移助手v1.44.0 带来了一个 Material UI 到 Backstage UI 的迁移辅助插件Themer对应仓库中的backstage/plugin-mui-to-bui见 plugins/mui-to-bui/README.md。新增页面路由/mui-to-bui将现有MUI v5 主题转换为 Backstage UIBUICSS 变量提供实时预览live preview与复制/下载能力插件包名为backstage/plugin-mui-to-bui安装命令yarn --cwd packages/app add backstage/plugin-mui-to-bui。对于正在向新设计系统迁移的实例这是一个把主题转换成本显著降低的实用工具。八、新前端系统放宽 lint 规则以支持插件间导入此前内置 lint 规则禁止前端插件包导入其他前端插件包——这类依赖通常应下沉到-react或-common包中。但在新前端系统中扩展与适配其他插件成为常见需求这天然意味着要在代码中导入对应插件。因此 v1.44.0 放宽了 lint 规则支持这种特定场景前提是两个包的插件 ID 相同。实际效果你可以创建一个内部的前端插件包供应用导入再由该内部包导入你要适配的开源插件——适配代码不再被迫塞进 app 内部结构更清晰、更易复用。九、TechDocs CLIserve支持实时重载TechDocs CLI 及其嵌入式应用现在接入了mkdocs的 live reload 支持。运行techdocs-cli serve时文档源文件的修改可以即时反映到预览中显著提升本地编写与预览 TechDocs 的效率。十、通过配置直接设置 HTTP 服务器选项v1.44.0 让你可以直接从app-config中设置后端的低层 HTTP 服务器选项如请求超时无需再改写 root HTTP router 服务。对应服务文档位于仓库 docs/backend-system/core-services/root-http-router.md其配置示意如下支持数字毫秒、ms字符串、ISO 时长字符串与时长对象等多种格式backend: server: # (Optional) HTTP server configuration, Node.js defaults apply otherwise headersTimeout: 60000 requestTimeout: 30s keepAliveTimeout: { seconds: 5 } timeout: PT30S # Numeric-only settings maxHeadersCount: 2000 maxRequestsPerSocket: 100若需要更细粒度的控制仍可通过代码方式在createBackend中配置rootHttpRouterServiceFactory的configure回调配合applyDefaults辅助函数保留默认 app/router 配置、仅定制 Node.js HTTP Server 的超时等底层参数backend.add( rootHttpRouterServiceFactory({ configure: ({ server, applyDefaults }) { // apply default app/router configuration applyDefaults(); // customize the Node.js HTTP Server timeouts server.keepAliveTimeout 65 * 1000; server.headersTimeout 66 * 1000; }, }), );这一特性让运维侧无需编写自定义服务实现即可统一在配置文件里管理请求超时等行为。十一、安全修复与升级路径本版本不包含任何安全修复Security Fixes: none因此安全相关的升级决策可参考其他渠道的公告。官方建议保持 Backstage 项目持续更新到最新版本完整的升级指引见 docs/getting-started/keeping-backstage-updated.md完整的逐条变更记录见 docs/releases/v1.44.0-changelog.md。升级核对清单综合以上变更从 v1.43.x 升级到 v1.44.0 建议按如下顺序自查Scaffolder 相关更新scaffolderActionsExtensionPoint导入路径到主导出处理被移除的废弃类型为自定义TaskBroker补齐cancel/recoverTasks/retry可 no-op评估是否依赖被弃用的任务类型。应用入口在 packages/app/src/index.tsx 引入backstage/ui/css/styles.css并移除noCssBaseline相关代码。UI 组件将TextField的password/search类型迁移到PasswordField检查是否使用了已移除的ScrollArea与 Icon 组件图标改用remixicon/react。测试代码将renderInTestApp({ extensions })迁移到renderTestApp。插件开发如维护 stable/alpha 双版本 dev app可尝试yarn package start --entrypoint dev/alpha新前端插件间的导入适配确认插件 ID 相同以通过 lint。后端运维如需要直接在app-config.yaml的backend.server下配置超时等 HTTP 服务器选项。以上每一项都可对照本仓库对应源码与文档进一步深入例如 Scaffolder 扩展点定义见 plugins/scaffolder-node/src/extensions.ts测试工具实现见 packages/frontend-test-utils/src/app/renderTestApp.tsxHTTP 服务器配置见 docs/backend-system/core-services/root-http-router.md。【免费下载链接】backstageBackstage is an open framework for building developer portals项目地址: https://gitcode.com/GitHub_Trending/ba/backstage创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价