开发规范与约定
一个可以被 Paperlib 加载的插件必须遵守以下规范:
- 在监听事件回调中,不要使用
floating promise
,即,如果你的回调函数中包含AsyncFunction
,请务必await
,或者.catch
异常。因为floating promise
中的异常无法在 Paperlib 中被捕获,会导致插件崩溃。 - 插件必须可以可以打包为
commonjs
规范的npm
包。 - 非
New Window
插件打包为单个js
文件,并推荐minify
以减小下载体积。 - 使用相应的工具,移除
PLAPI, PLMainAPI, PLExtAPI
的import
语句,保留代码中的PLAPI, PLMainAPI, PLExtAPI
的使用语句后打包。这样可以保证插件在 Paperlib 的正常运行。在我们提供的开发环境中,我们使用了rollup-plugin-modify
插件来实现这一功能。此约束设置的原因是,paperlib-api
包提供的PLAPI, PLMainAPI, PLExtAPI
类型定义仅用于开发时的代码提示,不包含任何功能,不应该出现在插件的最终代码中。当插件加载后,在其VM
中会自动全局注入PLAPI, PLMainAPI, PLExtAPI
对象,插件可以直接使用这些对象。 package.json
中必须包含manifest_version
字段,指示插件使用的 API 版本。请与你实际安装的paperlib-api
包的版本保持一致。我们推荐始终使用最新的 API 版本。package.json
中必须包含main
字段,指向插件的入口文件。package.json
中关键字必须包含paperlib
字段,以便在插件市场可以搜索到。package.json
中的name
字段必须与插件主代码中的id
字段一致。package.json
中的version
字段必须符合semver
规范。package.json
中的description
字段必须包含插件的简要描述。package.json
中的author
字段必须包含插件的作者信息。package.json
中的dependencies
字段不包含依赖。即所有依赖都是devDependencies
。依赖中的相关功能请通过打包工具打包至插件的.js
文件中。package.json
中的files
字段推 荐正确设置,以只包含发布文件。- 强烈推荐使用
package.json
中的homepage
字段,提供插件的官方网站,供用户了解更多关于插件的信息和反馈。