在开始编写插件之前,请先做好以下准备工作:
一个你喜爱的文本编辑器/IDE
你需要实现的功能
实现的思路(通过JavaScript即Node.js)
1.首先新建一个文件夹
2.建立元数据文件
新建一个JSON
文件,在其中填入以下内容,并根据下方的字段说明对您的实际情况修改内容。
{
"name":"Hello World",
"description":"This is a sample extension",
"author":"Yuameshi",
"versionCode":1,
"version":"1.0",
"package":"xyz.han-han.example.extension",
"injectToRendererProcess": "index.js",
"injectToMainProcess": "main.js"
}
字段名称 | 数据类型 | 数据描述 |
name | 字符串(String) | 插件名称 |
description | 字符串(String) | 插件描述 |
author | 字符串(String) | 插件作者 |
versionCode | 数字(Number) | 版本号 |
version | 字符串(String) | 版本名称 |
package | 字符串(String) | 包名,命名规则见下 |
injectToMainProcess | 字符串(String) | 注入到主进程的脚本相对路径 |
injectToRenderer | 字符串(String) | 注入到渲染进程的脚本相对路径 |
包名(Package
字段)说明
什么是包名 ?
DBSS使用包名(Package Name)作为应用的唯一标识。即:包名必须唯一,一个包名代表一个插件,不允许两个插件使用同样的包名。包名主要用于DBSS识别应用,几乎不会被最终用户看到。
包名的命名规则
可以包含大写字母(A到Z)、小写字母(a到z)、数字和下划线,可以用点(英文句号)分隔,隔开的每一段都必须以字母开头。
避免包名冲突
因为包名是唯一标识,为了避免与其他插件的包名重复,产生冲突,您可以这样命名:
将您的域名反转过来作为前缀,比如如果您的域名是example.com,那么包名可以用com.example开头,这样可以有效的避免重复
在后面增加描述产品名称的字符,比如您的插件将用于修改主题,可以命名为com.example.theme
如果您没有域名,可以使用自己的邮箱作为前缀,比如 com.qq.WoDeYouXiang
包名冲突如何处理?
如果您发现您尚未发布的插件,包名和其他开发者已经发布的插件重复了,建议立刻修改插件的包名,避免冲突。
如果您的插件已经发布了,但是在提交插件时,被告知已经有其他开发者上传了同包名的插件,可以按照指示,联系yuameshi@outlook.com处理。
请注意
插件发布后,请不要修改包名,一旦您修改了包名,就会被当作一个新的插件,旧版用户也无法直接更新插件。
注入脚本路径说明(injectToMain/RendererProcess
字段)说明
路径为相对路径,程序在调用时将调用对应的脚本注入到对应的进程,如果您的脚本位于scripts
文件夹下,文件名为index.js
,则填写scripts/index.js
,如果位于根目录下,文件名为main.js
,则直接填写main.js
3.开始编写脚本
DBSS的运行环境中包含Node支持,当前暂不支持引入外部依赖,只能引入DBSS具有的依赖,DBSS当前包含的依赖列表如下所示:
你可以在以下站点找到它们的文档
Electron
Node.js
electron-prompt
fs-extra
node-stream-zip
node-powershell
regedit
bytenode
@electron/remote
4.打包插件及发布
将插件工作目录下需要的文件添加到一个ZIP格式的压缩文件中,然后提交到yuameshi@outlook.com处,由我们进行审核,测试,发布。