# 小说阅读器 **Repository Path**: T_Salt/novel-reader ## Basic Information - **Project Name**: 小说阅读器 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-21 - **Last Updated**: 2026-09-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 小der阅读器 一款免费、简洁、无广告的桌面小说阅读器,使用 **Tauri 2 + Vue 3 + TypeScript + Rust** 构建,支持本地 TXT 阅读和部分开源阅读书源规则。界面风格参考 [ReadCat](https://github.com/read-cat/read-cat)。 项目仓库:https://gitee.com/T_Salt/novel-reader ## 功能 - **书籍管理**:多文件或文件夹导入 TXT、修改书名和作者、封面/列表视图、标题和作者筛选。 - **编码与目录**:自动识别编码,也可手动选择;支持章节标题、数字标题、`===标题===`、按行数及自定义正则解析,可重新生成目录。 - **阅读**:阅读进度记忆、目录跳转、书内搜索、书签、在线章节按需获取和缓存。 - **排版**:多种阅读配色与自定义颜色,可调整字体、字号、字重、行距、段间距、版心宽度和页边距。 - **书源**:内置 11 条书源配置,支持导入开源阅读格式的 JSON,搜索在线书籍并加入书架。 - **朗读与外观**:系统语音朗读当前章节,提供浅色、深色和系统外观选项。 ## 使用说明 1. 在书架选择「导入 TXT」,选择文件或文件夹,确认书名、作者、编码和章节规则后导入。 2. 点击书籍封面开始阅读;单击阅读区域中央切换工具栏,点击两侧或使用方向键、PageUp / PageDown、空格及滚轮翻页。 3. 使用目录、书签和书内搜索定位内容,在阅读设置中调整排版。 4. 在书源页管理书源,使用搜索功能查找在线书籍并加入书架。 书架为空时会自动添加《小der使用指南》。导入选择阶段会跳过 **小于 100 KiB 的 TXT 文件**,小型测试文本可能不会出现在导入列表中。 ### 书源兼容性 内置配置来自殆知阁、中国哲学书电子化计划、维基文库、古腾堡计划和 Standard Ebooks,面向公版或自由许可文本。使用外部书源时,请确认相关内容的授权和站点使用条款。 - 目前仅兼容部分开源阅读规则,包括常用选择器、文本/属性提取、简单 JSON 路径和正则替换;不执行 `@js:`、`` 等 JavaScript 规则,也不支持完整 XPath。 - JSON 导入成功不代表书源一定可用,外部站点变更也可能导致规则失效。 - 书架搜索查询前 **10 个**已启用书源的第一页;独立搜索页的「全部」查询前 **12 个**已启用书源的第一页,也可选择单个书源。 - 在线书籍的书内搜索不会主动下载整本书;语音朗读可用的声音取决于系统或浏览器环境。 ## 本地开发 ### 环境要求 - 推荐 **Node.js 22 LTS**,使用 npm 安装依赖。 - 桌面端需要 [Rust](https://www.rust-lang.org/tools/install) 和 [Tauri 平台依赖](https://tauri.app/start/prerequisites/)。Windows 使用 MSVC 工具链时,需要 Visual Studio C++ 桌面开发工具、Windows SDK 和 WebView2 Runtime。 - 当前便携打包脚本面向 **Windows**;其他平台的分发构建尚未在本文档中提供验证流程。 ### 获取与启动 ```bash git clone https://gitee.com/T_Salt/novel-reader.git cd novel-reader npm ci # 浏览器开发预览,不编译 Rust npm run dev # 桌面端开发 npm run tauri:dev ``` 开发预览地址为 http://localhost:1420,端口占用时需要先释放端口。 | 命令 | 用途 | | --- | --- | | `npm run dev` | 启动 Vite 开发服务器 | | `npm run build` | 执行 Vue / TypeScript 类型检查并构建前端 | | `npm run preview` | 预览已构建的前端,需先执行 build | | `npm run tauri:dev` | 启动 Tauri 桌面开发环境 | | `npm run tauri:build` | 编译桌面程序并生成两种 Windows 便携版 | ### 浏览器与桌面端差异 | 项目 | 浏览器预览 | 桌面端 | | --- | --- | --- | | 数据存储 | IndexedDB | Tauri 应用数据目录 | | 本地阅读 | 支持导入、阅读与进度保存 | 支持导入、阅读与进度保存 | | 在线书源 | 受浏览器跨域及请求头限制 | 通过 Rust 发起网络请求 | | 窗口能力 | 浏览器窗口 | 原生窗口控制、位置和尺寸恢复、透明背景 | 两端数据独立,不会自动同步。浏览器预览遇到跨域错误时,可在桌面端验证书源。 ## Windows 便携打包 `npm run tauri:build` 会先执行 `tauri build --no-bundle`,再运行 PowerShell 打包脚本,当前不生成 NSIS 安装包。 除桌面开发环境外,打包还需要: - **7-Zip**:脚本要求 `C:\Program Files\7-Zip\7z.exe` 和 `C:\Program Files\7-Zip\7zCon.sfx` 均存在。 - **图标工具**:`windres` 或 `rcedit`。可加入 PATH,或通过环境变量 `WINDRES` / `RCEDIT` 指定可执行文件路径。 - **WebView2 Runtime**:脚本优先查找桌面输出目录内的 `WebView2Runtime`,其次查找 `%ProgramFiles(x86)%\Microsoft\EdgeWebView\Application` 下的版本目录。仅安装在其他位置时,脚本可能无法自动发现。 - Windows PowerShell 和 `robocopy`。 ```bash npm run tauri:build ``` 输出位于 Windows 系统桌面的「小der阅读器」文件夹: | 文件 | 说明 | | --- | --- | | `小der阅读器.exe` | 包含压缩后的 WebView2 Runtime,可在缺少运行库时离线展开 | | `小der阅读器-无内核.exe` | 不附带 Runtime,依赖系统、缓存或旁置的 WebView2 Runtime | 两个版本阅读功能相同。脚本一次生成两个版本,因此即使只需要无内核版,也需要满足完整打包依赖。输出文件被占用时,脚本会尝试使用 `-new.exe` 文件名。 “便携版”表示免安装分发:启动器仍会在 `%LOCALAPPDATA%\小der阅读器` 展开程序和运行库,书籍数据存储于 Tauri 应用数据目录,不会全部保存在 EXE 旁边。 ## Git 提交约定 ### 提交范围 提交源码、配置、必要的图标和运行依赖,以及 `package-lock.json`、`Cargo.lock` 等依赖锁文件。构建所需的 WebView2 Loader DLL 保留在版本库中。 忽略规则已排除依赖目录、Rust 编译缓存、前端构建产物、临时下载、日志、本地环境配置和常见私钥文件。环境变量示例文件可使用 `.env.example` 或 `.env.<环境>.example`,内容只填写示例值。 发布用 EXE 和压缩包应作为发行附件上传,不要添加编译缓存或便携包到源码提交中。忽略规则只作用于未跟踪文件,不能清除已提交内容。 文本文件默认统一为 LF,Windows 批处理文件为 CRLF;二进制资源不进行换行符转换。无需修改个人 Git 全局设置。 ### 提交信息 使用 `类型(可选范围): 简短说明`,每次提交围绕一个明确目的: | 类型 | 用途 | | --- | --- | | `feat` | 新增功能 | | `fix` | 修复问题 | | `docs` | 文档更新 | | `style` | 格式调整,不改变行为 | | `refactor` | 重构,不改变外部行为 | | `perf` | 性能优化 | | `test` | 测试变更 | | `build` | 依赖和构建脚本变更 | | `chore` | Git 规则等维护工作 | 例如: ```text feat(reader): 支持自定义阅读背景 fix(source): 修复书源搜索结果解析 docs: 完善 Windows 打包说明 chore(git): 排除临时文件与编译缓存 ``` ### 提交前检查 ```bash git status --short git diff --check git diff # 修改前端代码时执行 npm run build # 按实际改动选择文件暂存,以下为文档更新示例 git add README.md git diff --cached # 确认暂存内容后再提交 git commit -m "docs: 更新项目使用说明" ``` 涉及 Rust 或打包脚本的改动,还应验证对应的桌面构建或打包流程。以上为协作约定,当前未安装自动校验提交信息的 Git hook。