9cats
1
如题,例如从样板项目中启动的话,配置文件会从
plugins:
group:server:
server:
port: 5140
maxPort: 5149
...
变为以下内容(加上了 :jhyjuq
这样的 id)
plugins:
group:server:
server:jhyjuq:
port: 5140
maxPort: 5149
...
提出问题的原因仅仅因为配置文件中加上随机ID后可读性有些差
1 个赞
不全面的一点解释:
koishi是可以存放多个配置的,如果不加ID的话,各种配置会乱作一团
3 个赞
二楼说的没错,如果没有 id 你就不能创建两个插件组或者在一个插件组装两个相同插件了(
v5 的新配置文件格式会把 name 和 id 分开写,可能会稍微提高可读性,具体可以看 v5 预告贴。
3 个赞
9cats
4
明白了。
但是可不可以通过 uid=${parent.uid}:${plugin.name}:${plugin.id}
类似这样的值来识别不同的插件,
即某个插件的唯一识别值(uid) = 父节点的 uid + 插件名 + 插件 id。
这样的话,配置文件就不一定需要加上随机ID。
1 个赞
那你的插件 id 还是得有啊。同一个父级下可以有两个相同插件名的。
1 个赞
9cats
6
我的意思是 id 可以为空,比如以下配置就没问题
plugins:
group:basic:
admin: {}
bind: {}
group:adapter:
adapter-qq: {}
adapter-qq:cecilia: {}
就算 id 为空,也可以根据原有插件名和父节点的信息来识别,不会那么容易出现”重复“的情况
但是像以下配置就肯定会抛出错误,或者为第二个重复插件自动添加id
plugins:
group:adapter:
adapter-qq: {}
adapter-qq: {}
理想以上配置在运行后会自动更新为以下内容:
plugins:
group:adapter:
adapter-qq: {}
adapter-qq:jhyjuq: {}
并且在控制台中打印警告信息:检测到插件 group:adapter.adapter-qq 重复,已自动更名为 group:adapter.adapter-qq:jhyjuq
2 个赞
问题是这个配置文件是自动生成的,并没有打算让用户写这个,因为会造成很多问题:
-
这个 ID 本身是一种永久链接(permalink),在「插件管理」页面中,你可以随意拖动插件或重启实例,这个插件的详情页的链接都不会发生变化;如果可以为空就不能基于 ID 分发永久链接,届时插件管理就无法方便地进行链接分享和持久化等工作。
-
如果允许用户编辑这里的部分,本身就需要考虑用户在里面插入特殊字符的问题,例如空格、冒号和 @ 等等;目前的做法是有一个专门的 $label
属性用于编辑显示名称(你试试在插件上右击重命名),如果利用这里的 ID 那么既限制了用户的操作,又徒增了隐患。
2 个赞