思源笔记社区正在搭建中,现邀您共建
SiYuan Community is under construction. Join us to co-build.
clone 到本地进行开发node_modules 文件夹并下载所有相关依赖,其中主要包括 svelte 相关依赖,siyuan 插件开发相关依赖,需要注意的是,可能依赖被下载后没有被 正确加载,你需要一次甚至多次重启编辑器来确保其成功加载dist 文件夹,以及 package.zip 文件,说明成功编译了所有文件,dist 文件夹放入思源工作空间 /data/plugin 目录下就能够被思源识别和加载*.ts或*.scss/i18n/*/src 目录下的源码部分,以及 plugin.json 这个插件配置文件无论使用何种方式编译打包,我们最终需要生成一个 package.zip,它至少包含如下文件: i18n/* icon.png (160*160) index.css index.js plugin.json preview.png (1024*768) README*.md
*.ts(*.svelte) 被编译为 index.js*.scss 被编译为 index.css/dist 目录下,并在项目的根目录下输出一个 package.zip 文件package.zip 需要开发者手动上传到 github 仓库供思源集市拉取siyuan 这个 npm 包,它的文件中,只有 siyuan.d.ts 生效,它只对插件系统的 API 类型进行声明,以此确保开发者正确调用 API,所以你常常需要执行以下代码,确保项目的依赖是最新的:pnpm up --latest
或
pnpm up -L/src/index.ts 中,简化如下:import "./index.scss";
import { Plugin } from "siyuan";
export default class PluginSample extends Plugin {
onload() {
console.log("Hello World!");
}
}PluginSample 类继承了 Plugin 类,并实现了它的 onload() 方法,所以你可以认为,PluginSample 类的 onload() 方法就是插件的入口,如果插件系统加载它,就会在控制台输出 Hello World!siyuan.d.ts(在 /node_modules/siyuan 下),或者网络查看它,你能够看到,Plugin 是一个抽象类,它还还定义了 onunload() 和 onLayoutReady() 方法,顾名思义,前者是在插件卸载时执行,后者是在界面加载完毕时执行,以此我们能做更多的事,如果你在开发中遇到问题,需要去了解插件系统的某个方法是如何实现的,你可以随时在这里找到它siyuan.d.ts 它定义了前端 API,后端 API 是由思源内核提供的,官方文档在这里将你的库克隆到本地开发文件夹中,为了方便可以直接将开发文件夹放置在 {工作空间}/data/plugins/下
/dist目录下的文件链接到插件文件夹下,其中的内容不会被同步pnpm run build,会将源代码和资源文件打包输出到/dist目录下,并在项目根目录输出package.zip,你需要重启思源,或者先禁用再启用插件,来让插件重新加载,因此你最好直接配置vscode6806端口,会启动浏览器访问思源,只要刷新网页便会重载思源界面,方便开发pnpm run dev,会在后台挂起脚本实时编译,每当你按下CTRL+S保存,就会进行一次编译,并刷新浏览器,你能够立即看到更改,以便于快速开发执行 pnpm run build生成 package.zip在 GitHub 上创建一个新的发布,使用插件版本号作为 “Tag version”,示例 https://github.com/siyuan-note/plugin-sample/releases 上传 package.zip 作为二进制附件 提交发布 如果是第一次发布版本,还需要创建一个 PR 到 Community Bazaar 社区集市仓库,修改该库的 plugins.json。该文件是所有社区插件库的索引,格式为: { "repos": ["username/reponame"] }PR 被合并以后集市会通过 GitHub Actions 自动更新索引并部署。后续发布新版本插件时只需要按照上述步骤创建新的发布即可,不需要再 PR 社区集市仓库。 正常情况下,社区集市仓库每隔 1 小时会自动更新索引并部署,可在 https://github.com/siyuan-note/bazaar/actions 查看部署状态。
package.zipplugin.json中的version字段,使用官方样板工程需要手动上传package.zip,使用社区样板工程,在正确配置后会自动打包,无需手动上传plugin.json 中的 version 字段,集市只有当检测到version字段变化才会拉取更新,并依据version字段拉取相应tag的releases中的package.zip,向用户推送