-
Notifications
You must be signed in to change notification settings - Fork 367
插件的基本结构
MicroBlock edited this page Mar 17, 2023
·
2 revisions
一般,一个插件需要至少两个文件:manifest.json
和一个 .js
文件。
插件 manifest 是插件的元数据,用于描述插件的基本信息、依赖、注入、请求修改等。BetterNCM 插件必须包含一个 manifest 文件。
-
manifest_version
(必需): 插件 manifest 版本,必需为 1。 -
name
(必需): 插件名。 -
slug
(可选): 插件唯一标识符 (英文、数字、横杠与下划线)。如果留空,则根据name
自动生成。 -
version
(必需): 插件版本号,推荐使用语义化版本 ( https://semver.org/ )。 -
betterncm_version
(必需): 插件依赖的 BetterNCM 版本。 -
author
(必需): 插件作者。 -
author_link
(可选): 插件作者链接。 -
description
(必需): 插件描述。 -
preview
(可选): 插件预览图。 -
type
(可选): 插件类型。可选值为extension
(默认)、theme
或dependency
。 -
requirements
(可选): 插件依赖的其他插件的 slug。 -
injects
(可选): 描述插件注入的内容。 -
hijacks
(可选): 描述插件请求修改的内容。 -
native_plugin
(可选): 需要注入的 native dll。
{
"manifest_version": 1,
"name": "ExamplePlugin",
"slug": "example-plugin",
"version": "0.1.0",
"betterncm_version": ">=1.0.0",
"author": "Author",
"author_link": "https://example.com",
"description": "Description of the plugin",
"preview": "preview.png",
"type": "extension",
"requirements": ["example-dependency"],
"injects": {
"Main": [
{
"file": "main.js"
}
]
},
}
你应该将此文件的相对路径填入 Manifest 的 injects 中,以便于 BetterNCM 自动注入该文件。
在此文件内,你可以使用所有在 Chrome 91 浏览器中可以使用的 API。额外地,你还可以使用这些 API。
当 BetterNCM 加载该插件时,会执行 plugin.onLoad
代码块中的函数。你可以在这个函数中做一些初始化的操作。例如,导出一个函数:
plugin.onLoad(function () {
// do plugin stuff
this.mainPlugin.add=(a,b)=>a+b //导出一个名为 add 的函数
});
当用户点击插件面板上的设置按钮时,应该调用 plugin.onConfig
函数。该函数应该返回一个 DOM 元素,用于该插件的设置页面。
plugin.onConfig(tools => {
return document.createElement("div");
});
当 BetterNCM 加载全部插件后,会执行 plugin.onAllPluginsLoaded
代码块中的函数。你可以在这个函数中访问其他插件导出的函数,例如:
plugin.onAllPluginsLoaded(()=>{
// 访问其他插件导出的函数
loadedPlugins.ExamplePlugin.someApi();
})
请注意,访问其他插件导出的函数需要在所有插件加载完成后进行。