开发规范与约定
一个可以被 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字段,提供插件的官方网站,供用户了解更多关于插件的信息和反馈。