Files
DiffLens/README.md
T

96 lines
2.8 KiB
Markdown
Raw 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.
# DiffLens
> 精美酷炫的开源文本差异化对比桌面应用
> Text Diff Desktop App — built with **TypeScript + React + Electron**
DiffLens 是一款跨平台桌面文本对比工具,帮助你快速定位两份文件之间的所有差异。它采用暗色科幻视觉风格,提供**行级 + 词级内联高亮**的双栏并排视图与流畅的差异导航,操作简单、开箱即用。
---
## ✨ 特性
- **双栏并排对比**:左(原文件)右(对比文件)对照,行号清晰对齐
- **行级 + 词级双重高亮**:整行增删一目了然,同一行内的细微改动也能被精确定位
- **差异导航**:一键“上一处 / 下一处”在差异之间跳跃,也可直接点击定位
- **智能编码识别**:自动探测 UTF-8 / UTF-16 / GBK(含 BOM),中文文档不乱码
- **忽略选项**:支持“忽略行首尾空白”“忽略大小写”,适配弱差异场景
- **差异统计徽章**:实时统计新增 / 删除 / 修改行数
- **导出一键报告**:将对比结果导出为 HTML / 纯文本 / Markdown 三种格式,便于分享与归档
- **拖拽与菜单双入口**:支持文件拖拽导入,也支持顶部菜单与快捷键打开
- **滚动联动**:左右两个面板滚动位置自动同步
---
## 🧰 技术栈
| 层次 | 技术 |
| --- | --- |
| 语言 | TypeScript |
| UI | React 18 |
| 桌面壳 | Electron |
| 构建 | electron-vite (Vite 5) |
| 打包 | electron-builder |
| Diff 引擎 | jsdiff(行级 LCS + 词级词法 diff |
| 编码 | iconv-lite |
---
## 🚀 快速开始
```bash
# 安装依赖
npm install
# 启动开发模式(打开 Electron 窗口)
npm run dev
# 类型检查
npm run typecheck
# 运行测试(Vitest 单元 + 组件测试)
npm test
# 生产构建
npm run build
```
### 打包安装包
```bash
npm run build:win # Windows NSIS 安装包(需在 Windows 上执行)
npm run build:mac # macOS DMG
npm run build:linux # Linux AppImage / deb
```
---
## 🏗️ 架构
采用 Electron 经典三进程模型:
```
src/
├── main/ # 主进程:窗口、菜单、文件读取与编码探测、IPC
├── preload/ # 预加载:contextBridge 安全桥,仅暴露最小 API
└── renderer/ # 渲染进程:React 界面与全部 diff 逻辑
├── diff/ # diff 引擎(行级 + 词级高亮)
├── components/ # 界面组件(DiffView / Toolbar 等)
└── styles/ # 全局主题样式
```
**安全设计**:渲染进程通过 `contextBridge` 隔离,不直接接触 Node 能力;文件读取等系统操作统一收敛在主进程,仅经 IPC 白名单暴露。
---
## 📦 发布
- 作者:thzxx
- 组织:MetonaTeam
- 许可证:MIT License(见 [LICENSE](./LICENSE)
- 版本:0.2.1
---
## 📝 License
[MIT](./LICENSE) © 2026 thzxx 团队(MetonaTeam