zhtdbobo/LightMarkit

GitHub: zhtdbobo/LightMarkit

一款基于 Tauri 2 与 CodeMirror 6 构建的轻量级、本地优先的跨平台桌面 Markdown 编辑器,提供编辑、预览、文件树管理、大纲导航及 HTML/PDF 导出等完整写作功能。

Stars: 1 | Forks: 0

# LightMarkit LightMarkit 是一款基于 Tauri 2、React 和 TypeScript 构建的轻量级桌面 Markdown 编辑器,支持 Windows 和 macOS。 当前发布版本:[v0.4.0](https://github.com/zhtdbobo/LightMarkit/releases/tag/v0.4.0) ## 功能 ### 编辑与文件 - 使用 CodeMirror 6 提供 Markdown 编辑、行号和语法样式。 - 支持打开单个 Markdown 文件或文件夹,并在文件树中切换文档。 - 文件内容实际变更后自动保存;切换编辑/预览、窗口失焦或保存未修改文档不会重写文件,避免无意义地刷新文件时间戳。 - 在行首输入 `/` 可使用 13 个中文快捷命令,快速插入标题、列表、待办事项、引用、代码块、链接、图片和表格等内容。 - 支持 UTF-8、UTF-8 BOM 和常见旧编码 Markdown 文件。 - 监听当前文件的外部变更;存在本地未保存内容时不会直接覆盖。 ### 预览 - 实时渲染 Markdown,支持表格、只读任务列表、脚注、删除线、自动链接和软换行。 - 支持相对路径、绝对路径和 `file://` 形式的本地图片。 - 支持 Mermaid 图表渲染。 - 提供所见即所得编辑和纯预览两种单栏视图,可通过 `Ctrl+/` 快速切换,并保持当前阅读位置和滚动条布局稳定。 - 编辑区代码块支持语言选择、语法高亮、复制和折叠;输入新行时会连续扩展代码块样式。 - 预览代码块保留原始缩进和长行横向滚动,并支持复制与折叠;折叠后显示语言、首个非空代码行和总行数摘要。 ### 文档组织 - 根据 Markdown 标题生成可调整宽度的文档大纲。 - 大纲支持按标题层级折叠、当前章节高亮,以及在编辑和预览视图中点击精确置顶跳转;代码围栏内的伪标题不会进入大纲。 - 自动恢复上次打开的文件夹、当前文件、视图布局和侧栏宽度。 - 文件夹栏、编辑区和大纲栏宽度均可调整。 ### 导出与更新 - 导出 HTML,并嵌入本地图片和已经渲染的 Mermaid 图表。 - 导出 PDF,复用预览样式和渲染结果。 - 应用界面适配系统明暗外观。 - 窗口控制适配桌面平台:Windows 位于右上角,macOS 使用左上角红黄绿按钮。 - 支持在“关于”界面检查、下载并安装经过签名验证的应用更新。 ## 下载 当前版本的自动发布流程会同时生成: - Windows x64 NSIS 安装包(`.exe`)。 - macOS Universal 磁盘映像(`.dmg`),兼容 Intel 和 Apple Silicon。 - [下载最新版本](https://github.com/zhtdbobo/LightMarkit/releases/latest) 自动发布还会生成 Windows 和 macOS 更新包、对应的 `.sig` 签名以及包含两个平台信息的 `latest.json`。 macOS DMG 不使用 Apple Developer ID 签名或公证。首次打开时可能出现 Gatekeeper 提示,适合内部使用或由用户手动确认后运行。 ## 开发 ### 环境要求 - Node.js 22+ - pnpm 11+ - Rust stable - Windows 10/11,或 macOS 12+ - macOS 本地构建需要 Xcode Command Line Tools ### 安装依赖 pnpm install ### 常用命令 # 启动完整桌面开发环境 pnpm tauri dev # 仅启动 Vite 前端服务;依赖 Tauri API 的功能不可用 pnpm dev # 运行全部前端测试 pnpm test:run # 运行代码检查 pnpm lint # 构建前端 pnpm build # 根据当前系统构建桌面应用和安装包 pnpm tauri build 其他命令: - `pnpm test`:监听模式运行测试。 - `pnpm test:ui`:打开 Vitest UI。 - `pnpm test:coverage`:生成测试覆盖率报告。 - `pnpm format`:格式化 `src` 下的 TypeScript、TSX 和 CSS 文件。 ## 测试 前端使用 Vitest、Testing Library 和 happy-dom,Rust 后端使用 Cargo 测试。 提交功能修改前至少执行: pnpm lint pnpm test:run pnpm build 涉及 Tauri 配置、权限、Rust、文件系统或导出功能时,还需要执行: Set-Location src-tauri cargo test --target-dir target-codex-test Set-Location .. pnpm tauri build 完整验收要求见 [docs/testing-standard.md](docs/testing-standard.md)。 ## 技术栈 ### 前端 - React 19 - TypeScript 5.8 - Vite 7 - CodeMirror 6 - markdown-it - Mermaid ### 桌面端 - Tauri 2 - Rust - Tauri Dialog、Opener、Process 和 Updater 插件 - `notify` 文件变更监听 - `headless_chrome` PDF 导出 ### 工程工具 - pnpm - ESLint - Prettier - Vitest + Testing Library - GitHub Actions ## 项目结构 LightMarkit/ |-- src/ # React 前端 | |-- components/ # 编辑器、预览、文件树和大纲组件 | |-- utils/ # 文件、导出、渲染和滚动同步逻辑 | |-- test/ # 前端测试配置 | |-- App.tsx # 应用主界面与状态管理 | `-- main.tsx # 前端入口 |-- src-tauri/ # Tauri/Rust 桌面端 | |-- capabilities/ # Tauri 权限配置 | |-- src/ # Rust 命令与应用入口 | |-- tauri.conf.json # 通用应用、打包和更新配置 | |-- tauri.windows.conf.json # Windows NSIS 配置 | `-- tauri.macos.conf.json # macOS DMG 配置 |-- docs/ # 开发规范、计划和版本说明 |-- public/ # 静态资源 |-- CHANGELOG.md # 版本变更记录 `-- package.json # 前端依赖与脚本 ## 发布流程 每次创建版本标签前必须完成以下事项: 1. 更新 README 的功能、下载说明、环境要求以及顶部的 `release-version` 标记。 2. 同步 `package.json`、`src-tauri/Cargo.toml` 和 `src-tauri/tauri.conf.json` 中的版本号。 3. 更新 `CHANGELOG.md`,并添加 `docs/releases/vX.Y.Z.md` 版本说明。 4. 按 [测试规范](docs/testing-standard.md) 完成发布前验收。 5. 提交所有版本文件后再创建并推送 `vX.Y.Z` 标签。 GitHub Actions 会在构建安装包前校验标签、应用配置和 README 版本;任一版本不一致都会终止发布。校验通过后会构建 Windows x64 NSIS、macOS Universal DMG 和两个平台的签名更新包,并把更新信息合并到同一份 `latest.json`。发布需要配置 `TAURI_SIGNING_PRIVATE_KEY`,但 unsigned DMG 不需要任何 `APPLE_*` Secrets。 ## 开发计划 尚未完成的功能与后续里程碑见 [docs/开发计划.md](docs/开发计划.md)。开发计划中的条目不代表当前已经支持。 ## 许可证 [MIT](LICENSE)
标签:CodeMirror, Markdown编辑器, React, Syscalls, Tauri, 可视化界面, 本地优先, 桌面应用, 自动化攻击