.plg 文件是 Arupa 插件的分发格式。它是一个 ZIP 压缩包,
其中包含插件清单以及插件运行时所需的文件。
内核会扫描扩展名为 .plg 的文件,读取清单,
并在插件启动时将包解压到其配置的临时目录中。
包布局
一个有效的包在其压缩包根目录下包含info.yaml 文件,并且包含一个 Content 目录:
Content 是插件的运行时根目录。
内核通过 info.yaml 文件中的 $PLUGIN_ROOT 占位符以及注册期间返回的资源声明来公开其提取路径。
插件应将其可执行文件和所有静态资源保存在此目录下。
软件包必须同时包含 info.yaml 和 Content/ 目录。
无法以 ZIP 压缩包形式读取、缺少根目录清单或缺少内容目录的软件包将无法加载。
info.yaml
清单文件用于标识插件并告知内核如何启动它:
其他字段将作为插件元数据保留。它们可供内核的插件管理功能或应用程序 UI 使用,
但不会替换上述必需的运行时字段。
后端和命令
对于 WASM 插件,请将Type 设置为 wasm,并将 Command 指向以下模块:
Type 设置为 grpc,并将 Command 指向以下可执行文件:
$PLUGIN_ROOT,并提供 PLUGIN_ROOT 环境变量。
这使得可执行文件能够找到资源,而无需依赖内核选择的临时提取路径。
构建和打包
按以下顺序构建插件并打包。1. 编译插件
为选定的后端编译插件。编译结果是一个运行时工件: WASM 插件的 WASM 模块或 gRPC 插件的可执行文件。 请保留该工件,以便将其复制到包的Content/ 目录中。
2. 创建包目录
为包创建一个临时目录。info.yaml 和 Content/ 必须位于此目录下:
3. 创建 info.yaml
在包根目录创建 info.yaml 文件。将 Command 设置为相对于 Content/ 目录的工件路径,使用 $PLUGIN_ROOT:
Type 设置为 grpc,并将 Command 指向可执行文件,例如 Command: $PLUGIN_ROOT/my-plugin。
4. 放置运行时工件和静态资源
将编译后的工件复制到Content/ 目录。其位置必须与以下内容匹配:
info.yaml:
5. 创建 ZIP 压缩包
在暂存目录中创建压缩包。这样会将info.yaml和 Content/ 目录保留在归档根目录:
plugins/my-plugin.plg
文件已准备好放置在内核的已配置的 PluginDir 目录中。
扫描该目录或重启内核以发现该软件包。
加载软件包
内核的软件包工作流程如下:- 扫描
PluginDir目录以查找.plg文件; - 读取并验证每个文件。h 包的
info.yaml文件; - 将选定的包解压到
PluginTempDir目录; - 启动由
Type和Command参数描述的后端; - 调用插件的注册方法;以及
- 连接插件返回的路由、静态挂载点、Socket.IO 资源和消息处理程序。
Name 和 Version 必须与 info.yaml 文件中的值匹配;否则内核将拒绝该包。
有关启动行为、运行时参数以及 gRPC 插件的执行用户,请参阅 插件配置。