关于 using-backstage-backend-system
面向定义 Backstage 后端插件、模块和扩展点的技能,说明如何选择合适结构,并正确配置注册、依赖与扩展点。
主要功能
- 01插件与模块结构指南
- 02扩展点定义模式
- 03注册与依赖配置
- 04插件和模块 ID 规则
- 05作用域服务的区别
适用场景
- 01创建后端插件
- 02为现有插件构建模块
- 03选择插件或模块结构
- 04向模块开放扩展点
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ vinzscam/ backstage-skills --skill using-backstage-backend-system安装后在 Claude Code 中输入/using-backstage-backend-system确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/extension-points.mdmodules.mdplugin-definition.md详细介绍
Backstage 后端系统模式
何时使用此技能
- 定义新的后端插件(
src/plugin.ts) - 定义扩展其他插件的后端模块(
src/module.ts) - 在完整插件和模块之间进行选择
- 暴露扩展点,以便其他模块扩展你的插件
选择合适的模式
| 正在构建…… | 模式 | 参考资料 |
|---|---|---|
| 插件本身 | createBackendPlugin({ pluginId, register }) | references/plugin-definition.md |
| 扩展其他插件的模块 | createBackendModule({ pluginId, moduleId, register }) | references/modules.md |
| 供其他模块扩展的扩展点 | createExtensionPoint<T>({ id }) | references/extension-points.md |
两种调用模式
- 独立模式:编辑现有后端插件/模块。
- 脚手架后处理(由
creating-backstage-plugin针对backend-plugin、backend-plugin-module、catalog-provider-module、scaffolder-backend-module调用):接入规范结构(src/plugin.ts或src/module.ts,以及重新导出的src/index.ts)。
常见注意事项
- 所有接线相关的导入都来自
@backstage/backend-plugin-api,而不是仅用于前端的@backstage/core-plugin-api。 register(env)回调会接收一个环境对象,其中包含env.registerInit({ deps, async init })和env.registerExtensionPoint(point, impl)。deps是初始化函数所需服务引用的映射;init接收解析后的实例。- 每个插件/模块只能调用一次
registerInit。必须先调用registerExtensionPoint,再调用registerInit。 - 插件作用域与根作用域服务:大多数引用(
logger、httpRouter、database、scheduler、auth、httpAuth、userInfo、cache、discovery、urlReader、lifecycle、permissions)都属于插件作用域——每个插件都会获得自己的实例,并带有插件感知行为(例如,日志记录器会预先附加pluginId标签,数据库会为每个插件提供独立的架构)。六个引用(rootConfig、rootLogger、rootLifecycle、rootHealth、rootHttpRouter、rootInstanceMetadata)属于根作用域——由所有插件共享同一个实例。两类服务都可以在插件的register代码块中声明依赖;二者的区别在于行为,而非注入语法。 - 插件的
pluginId和模块的moduleId必须符合模式[a-z][a-z0-9-]*(字母、数字、连字符;必须以字母开头)。 - 模块依赖于目标插件库包(例如
@backstage/plugin-catalog-node)导出的扩展点,而不是插件的主包。
评论
支持 Markdown