Replies: 1 comment 9 replies
-
在应用市场获取插件定义的这个字段即可 没有必要单独去定义annotation , key以?结尾表示可选依赖推荐安装,否则为必装依赖 示例参考: 如果是主题则可能得使用另外的方式,这两者可以分开识别,但定义推荐可能还是需要考虑版本范围的约束 |
Beta Was this translation helpful? Give feedback.
9 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
摘要
目前 Halo 的单个主题或者插件(尤其是主题)可能会依赖于其他插件,虽然目前插件已经在底层支持了插件依赖,但没有很好的办法引导用户安装,尤其是依赖的还只是
metadata.name
,用户即便看到依赖提示,可能仍然无法知道具体需要安装什么插件。所以我建议专门为应用市场插件提供元数据定义,专门用于定义依赖/或者推荐应用,可以实现用户在应用市场安装主题或者插件之后,如果有依赖/推荐定义,在安装完之后可以显示引导安装其他推荐或者依赖插件的界面,引导用户安装。
定义方式
以默认主题为例。
说明:
store.halo.run/recommend-apps
:推荐应用的定义,为应用市场应用 id 的数组。store.halo.run/required-apps
:依赖应用的定义,为应用市场应用 id 的数组。最终用户在应用市场安装这个主题之后,会解析这个定义,然后判断是否已经安装,如果有未安装的应用,会根据应用 id 显示出所需的应用,引导用户安装。
疑问
Q1. 为什么不直接在插件/主题定义的 spec 中定义依赖?
因为 Halo 并不依赖应用市场插件,应用市场插件应该始终为可选,用户可以自行决定是否要使用应用市场插件,所以我认为放在 spec 中并不合适,这需要修改 Halo 本身的代码。
Q2. 为什么插件有了
spec.pluginDependencies
字段,还需要单独定义这两个元数据?这只是底层插件机制的依赖,如果按照这个字段去实现,以目前应用市场的系统设计无法完成,并且可能仍然需要为应用市场插件去修改 Halo 的代码,这可能会导致强依赖。我认为
store.halo.run/recommend-apps
和store.halo.run/required-apps
并不需要和spec.pluginDependencies
有关联,这应该让开发者自行决定。相关讨论
参考:
Beta Was this translation helpful? Give feedback.
All reactions