Files
menav/bookmarks
rbetree 670e73e93c fix: 补齐书签 subgroups 渲染并对齐 README
- 修复 subgroups 生成但不展示的问题(模板渲染 + 前端结构导出)
- 更新 README:配置示例/完全替换策略/多层级说明与 helper 文档,减少重复说明
2025-12-22 02:16:01 +08:00
..
2025-05-02 00:32:44 +08:00

MeNav 书签目录

目录

目录概述

bookmarks 目录是 MeNav 项目中用于存放浏览器导出的书签文件的专用目录。该目录与书签导入功能直接关联,用于自动将浏览器书签转换为 MeNav 配置文件,从而快速生成个人导航站点。

书签导入功能

书签导入功能允许用户:

  • 从浏览器导出书签为 HTML 文件
  • 将书签文件放入此目录
  • 通过自动处理将书签转换为网站配置
  • 无需手动编辑即可批量导入网站链接

这一功能极大简化了网站内容的初始设置过程,特别适合需要迁移大量书签的用户。

配置加载优先级(完全替换)

书签页配置同样遵循项目的“完全替换”策略:系统只会选择一套配置目录加载,不会把 user_default 混合合并。

  • 若存在 config/user/:书签页配置应位于 config/user/pages/bookmarks.yml(通常由导入脚本生成)
  • 否则:使用 config/_default/pages/bookmarks.yml(默认示例)

提示:一旦创建 config/user/config/_default/ 会被完全忽略,因此不要指望从默认配置“兜底补齐缺失项”。

MarksVault 扩展集成

MarksVault 浏览器扩展可与 MeNav 集成,实现书签自动同步:

  • 一键推送书签:扩展将书签 HTML 文件推送到仓库的 bookmarks/ 目录
  • 自动化处理GitHub Actions 检测到书签文件后自动运行导入脚本生成配置
  • 自动清理:处理完成后会删除已导入的 HTML 文件,避免重复处理

书签导入流程

完整的书签导入流程如下:

  1. 在浏览器中导出书签为 HTML 文件
  2. 将导出的书签文件放入 bookmarks 目录
  3. 运行书签处理工具:
    npm run import-bookmarks
    
    • config/user/ 不存在,导入脚本会先从 config/_default/ 初始化一份用户配置(因为配置采用“完全替换”策略,需要完整配置才能正常生成站点)。 (可选)若希望生成结果保持确定性(便于版本管理,减少时间戳导致的无意义 diff
    MENAV_BOOKMARKS_DETERMINISTIC=1 npm run import-bookmarks
    
  4. 系统自动解析书签文件内容
  5. 根据书签文件夹结构生成分类
  6. 生成配置文件保存到 config/user/pages/bookmarks.yml
  7. 构建网站应用新配置:
    npm run build
    

重要说明:在本地开发中,npm run dev 命令不会自动处理书签文件。您必须先手动运行 npm run import-bookmarks 命令处理书签,然后再运行 npm run dev 查看效果。这与 GitHub Actions 中的自动处理流程不同,请务必注意。

确定性输出

默认情况下,导入脚本会在生成的 bookmarks.yml 顶部写入时间戳注释,导致每次导入都会产生 diff。

若你希望生成结果尽量稳定(只有书签内容变化才产生 diff可使用环境变量开启确定性输出

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 的书签处理功能,快速将书签转化为个性化导航站点。