Files
Literature-Management/README.md
2026-10-21 14:42:59 +08:00

94 lines
5.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 文献管理
本地优先的文献管理桌面应用:文献库、Markdown 笔记、收藏。数据全部存在自己的硬盘上,不联网、不注册、不上传。
笔记是纯 Markdown,文献保留原始文件,任何编辑器都能打开。数据目录放进云盘就自动备份,换工具也不用迁移。
## 快速开始
```bash
npm install
npm run dev
```
启动后把 PDF 拖进左侧文献区就能读;新建一篇笔记写读后感;`Ctrl+Shift+F` 全文搜索笔记正文,也能按文件名找文献。
系统要求:Windows 10+ / macOS 11+ / Ubuntu 20.04+。从源码运行需要 Node.js 20.16 – 24(仓库 `.nvmrc` 锁 22.11.0)。
`npm install` 会为 Electron 重编 better-sqlite3,需要联网下载预编译产物或本地有 MSVC 工具链。启动失败先跑 `npm run rebuild:native`;vite 缓存异常先跑 `npm run dev:clean`。
## 功能
- 文献:拖入任意文件即复制入库,内嵌阅读器直接看 PDF、图片、代码、Markdown、纯文本。文件夹可任意嵌套、拖拽移动,外部改动自动感知。
- 笔记:CodeMirror 编辑,带语法高亮、撤销重做、源码与预览切换。停止输入 1.5 秒自动保存,带冲突检测。自定义 frontmatter 字段原样保留。
- 双列工作台:左边读文献、右边写笔记,互不顶掉。分隔条可拖拽,宽度自动记住。左侧栏可折叠(`Ctrl+B`)。
- 搜索:SQLite FTS5 覆盖笔记正文全文,文献按文件名命中,命中处给高亮片段。内置中文分词,中英混排不用打空格也能命中。
- 收藏:文献一键收藏,列表可切「仅收藏」筛选。收藏就是一个 Markdown 文件,可以手写。
- 界面:明/暗/跟随系统三档,另有 15 套配色预设(每套自带明暗),3 族字体,中英文界面切换。
## 快捷键
| 快捷键 | 作用 |
| -------------------------- | ------------------------- |
| `Ctrl+1` / `Ctrl+2` | 切换文献 / 笔记列表 |
| `Ctrl+B` | 折叠 / 展开左侧栏 |
| `Ctrl+Shift+S` | 显示 / 隐藏状态栏 |
| `Ctrl+N` | 新建笔记 |
| `Ctrl+S` | 保存当前笔记 |
| `Ctrl+Shift+F` | 全文搜索 |
| `Ctrl+Shift+N` | 新建文件夹 |
| `Ctrl+,` | 设置 |
| `F2` | 重命名(笔记、文件夹) |
| `Ctrl+C` / `X` / `V` / `A` | 复制 / 剪切 / 粘贴 / 全选 |
| `Del` | 删除(移入系统回收站) |
| `Esc` | 关闭弹窗 / 取消拖拽 |
列表相关快捷键(`Ctrl+Shift+N`、`F2`、`Del`、复制剪切粘贴)需要先点一下列表;文献文件的重命名用右键菜单。macOS 用 `⌘` 替代 `Ctrl`。
## 数据
默认数据目录:`<文档>/ResearchHub/data`。在设置页可以改位置,迁移是复制方式,目标目录须为空,旧目录保留。
```
<数据目录>/
├── settings.json 应用设置
├── notes/ 笔记(.md + frontmatter,可嵌套子目录)
├── literature/ 文献副本(原始格式)
└── workspace/favorites/favorites.md 收藏
```
备份就是复制这个文件夹。全文搜索的 SQLite 索引单独放在系统用户目录,删掉重启会自动重建,备份不用带。
## 常见问题
**PDF 正文能搜到吗?** 不能。当前不做 PDF 文本抽取,文献只按文件名命中,与 PDF 有无文本层无关。
**有什么大小限制?** 入库单文件 500MB,内嵌阅读器 10MB,笔记正文 5MB。超过阅读器上限用阅读器里的「在系统应用打开」。接近上限的大段代码 / Markdown 会按渲染预算降级渲染(顶部有提示条),内容不丢,只是高亮和折叠从简。
**能同时开多篇文献吗?** 文献是单选阅读,双列的另一边是笔记。需要对照多篇就用系统应用另开。
**删掉的东西能找回吗?** 能。删除会移进系统回收站,还原后自动重新入库,收藏标记需要重新打。
**换电脑怎么搬?** 复制整个数据目录,在新机器上装好后到设置页指过去即可,索引会自动重建。
## 开发
技术栈:Electron 30 · React 18 · TypeScript 5 · Vite 5 · Tailwind 3 · Zustand 4 · CodeMirror 6 · better-sqlite3。
| 命令 | 作用 |
| ----------------------- | --------------------------- |
| `npm run dev` | 开发模式,热重载 |
| `npm run test:run` | 跑测试 |
| `npm run test:coverage` | 覆盖率报告 |
| `npm run typecheck` | 类型检查 |
| `npm run lint` | ESLint |
| `npm run build` | 编译,产出 `out/`,不含打包 |
打包安装包:`npm run build` 后跑 `npx electron-builder --win`(`--mac` / `--linux` 同理),产物在 `release/`。
代码分三层:主进程独占文件系统和原生模块,preload 只做桥,渲染进程只碰 DOM 和 `window.api`。所有 IPC 统一返回 `{ ok, data }` 或 `{ ok, code, message }`。写入统一走「临时文件 + fsync + rename」,断电不留半截文件。接受绝对路径的操作一律校验目标在数据目录内。
## 许可
MIT,见 [LICENSE](LICENSE)。