Files
chill_notes/HomePage/bookmarks/README.md
2026-04-21 22:40:15 +08:00

135 lines
5.6 KiB
Markdown
Executable File
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.
# MeNav 书签目录
## 目录
- [目录概述](#目录概述)
- [书签导入功能](#书签导入功能)
- [配置加载优先级(完全替换)](#配置加载优先级完全替换)
- [MarksVault 扩展集成](#marksvault-扩展集成)
- [书签导入流程](#书签导入流程)
- [确定性输出](#确定性输出)
- [支持的浏览器](#支持的浏览器)
- [书签格式要求](#书签格式要求)
- [文件处理机制](#文件处理机制)
## 目录概述
`bookmarks` 目录是 MeNav 项目中用于存放浏览器导出的书签文件的专用目录。该目录与书签导入功能直接关联,用于自动将浏览器书签转换为 MeNav 配置文件,从而快速生成个人导航站点。
## 书签导入功能
书签导入功能允许用户:
- 从浏览器导出书签为 HTML 文件
- 将书签文件放入此目录
- 通过自动处理将书签转换为网站配置
- 无需手动编辑即可批量导入网站链接
这一功能极大简化了网站内容的初始设置过程,特别适合需要迁移大量书签的用户。
## 配置加载优先级(完全替换)
书签页配置同样遵循项目的“完全替换”策略:系统只会选择一套配置目录加载,不会把 `user``_default` 混合合并。
- 若存在 `config/user/`:书签页配置应位于 `config/user/pages/bookmarks.yml`(通常由导入脚本生成)
- 否则:使用 `config/_default/pages/bookmarks.yml`(默认示例)
> 提示:一旦创建 `config/user/``config/_default/` 会被完全忽略,因此不要指望从默认配置“兜底补齐缺失项”。
## MarksVault 扩展集成
[MarksVault](https://github.com/rbetree/MarksVault) 浏览器扩展可与 MeNav 集成,实现书签自动同步:
- **一键推送书签**:扩展将书签 HTML 文件推送到仓库的 `bookmarks/` 目录
- **自动化处理**GitHub Actions 检测到书签文件后自动运行导入脚本生成配置
- **自动清理**:处理完成后会删除已导入的 HTML 文件,避免重复处理
## 书签导入流程
完整的书签导入流程如下:
1. 在浏览器中导出书签为 HTML 文件
2. 将导出的书签文件放入 `bookmarks` 目录
3. 运行书签处理工具:
```bash
npm run import-bookmarks
```
- 若 `config/user/` 不存在,导入脚本会先从 `config/_default/` 初始化一份用户配置(因为配置采用“完全替换”策略,需要完整配置才能正常生成站点)。
(可选)若希望生成结果保持确定性(便于版本管理,减少时间戳导致的无意义 diff
```bash
MENAV_BOOKMARKS_DETERMINISTIC=1 npm run import-bookmarks
```
4. 系统自动解析书签文件内容
5. 根据书签文件夹结构生成分类
6. 生成配置文件保存到 `config/user/pages/bookmarks.yml`
7. 构建网站应用新配置:
```bash
npm run build
```
> **重要说明**:在本地开发中,`npm run dev` 命令**不会**自动处理书签文件。您必须先手动运行 `npm run import-bookmarks` 命令处理书签,然后再运行 `npm run dev` 查看效果。这与 GitHub Actions 中的自动处理流程不同,请务必注意。
## 确定性输出
默认情况下,导入脚本会在生成的 `bookmarks.yml` 顶部写入时间戳注释,导致每次导入都会产生 diff。
若你希望生成结果尽量稳定(只有书签内容变化才产生 diff可使用环境变量开启确定性输出
```bash
MENAV_BOOKMARKS_DETERMINISTIC=1 npm run import-bookmarks
```
## 支持的浏览器
MeNav 书签导入功能支持从以下浏览器导出的书签文件:
- **Chrome** - 通过书签管理器导出
- **Firefox** - 通过书签库导出
- **Edge** - 通过收藏夹导出
- **Safari** - 通过书签菜单导出
- 其他支持标准 HTML 书签格式的浏览器
## 书签格式要求
导入的书签文件需满足以下要求:
- 文件格式HTML标准网络书签格式
- 文件编码UTF-8
- 文件结构:包含 `<DL>`、`<DT>` 和 `<A>` 标签的标准书签结构
- 文件大小:建议不超过 5MB约数千个书签
- 支持处理位于文件夹内的书签
- 支持处理不在任何文件夹内的根路径书签(自动归入"根目录书签"分类)
- 空文件夹会被忽略
## 文件处理机制
书签处理器 (`src/bookmark-processor.js`) 对书签文件进行以下处理:
1. **解析文件结构**
- 读取书签 HTML 文件
- 解析 DOM 结构获取书签层次
- 提取文件夹和链接信息
2. **分类提取**
- 将书签文件夹转换为网站分类
- 提取链接URL、标题和添加日期
3. **根路径书签处理**
- **自动分类**:根路径书签会被自动归入名为"根目录书签"的特殊分类
- **显示位置**:该分类始终位于所有其他分类之前(第一位)
- **图标标识**使用星标图标fas fa-star
- **条件生成**:只有存在根路径书签时才会创建该分类
- **自动映射**根路径书签同样支持基于URL的自动图标映射功能
4. **图标分配**
- 根据URL自动匹配合适的 Font Awesome 图标
- 为每个链接和分类分配图标
- 当 `icons.mode: favicon` 时,页面通常会优先显示站点 favicon配置里的 `icon` 主要用于回退显示或在 `icons.mode: manual` 时使用(详见 `config/README.md`
5. **配置生成**
- 创建符合 MeNav 配置格式的 YAML 文件
- 按层级组织分类和链接
- 应用自动生成的元数据
将书签放入此目录后,您可以立即利用 MeNav 的书签处理功能,快速将书签转化为个性化导航站点。