← 返回文章列表

从零开发并开源一个 Obsidian 插件

开发心得 2026/7/22 约 5 分钟

Nexusnote 是我第一个正式开源的 Obsidian 插件,主打素材收集与知识管理工作流。这篇文章复盘它从想法到 v0.1.2 发布的全过程—包括那些文档里不会告诉你的坑。

一、为什么要自己写插件

Obsidian 社区插件已经很多了,但”素材快速入库”这个场景始终没有完全趁手的方案:我想要弹窗式新建素材、结构化归档、再配一个仪表盘总览。与其组合五个插件互相打架,不如自己写一个。

判断”该不该自己造轮子”的标准:当你为拼凑现有工具写的胶水配置,比一个插件的核心代码还长时—就该动手了。

二、开发中的三个典型坑

1. 弹窗高度截断

新素材弹窗在内容多时会被直接截断,滚动条不出现。根因是 modal-content 没有用 flex 布局约束内部滚动区域。修复思路:外层固定最大高度,内容区 flex: 1; overflow-y: auto,让滚动发生在内部而不是撑破容器。

2. Ribbon 图标的辨识度

默认的通用图标在侧边栏里毫无存在感。最终替换成专属 SVG 图标—小细节,但它决定了用户”每天看到你的插件时的感受”。

3. 构建产物与源码的关系

Obsidian 插件发布的是 main.js + manifest.json + styles.css,构建产物必须跟随 Release 发布,而 node_modules 和内部文档绝不能进公开仓库。

三、开源整备清单

把私人项目变成公开仓库,比想象中琐碎。我的清单如下:

  • 隐私清理:内部文档(开发笔记、AI 协作记录等)从 git 索引中移除并重新推送—注意,仅加 .gitignore 是不够的,已跟踪的文件必须 git rm --cached
  • 协议选择:我选了 CC BY-NC—允许自由使用与修改,但禁止商用。
  • 版本与发布:语义化版本,每个 Release 附构建产物,写清楚三条核心变更即可,不需要长篇大论。
  • 可发现性:GitHub Topics、README 功能亮点段落、支持 BRAT 安装方式说明。

四、给想写插件的你

  1. 第一个版本只做一件事,做到”自己每天都想用”。
  2. UI 细节值得花时间—插件的口碑来自使用中的每一次顺手。
  3. 尽早开源。公开仓库会倒逼你把代码和文档收拾干净,这本身就是提升。

Nexusnote 目前发布到 v0.1.2,仓库在 GitHub,欢迎试用和反馈。🍡