1) src/bookmark-processor.js:加固书签导入 - config/user/ 不存在时先从 config/_default/ 初始化一套完整用户配置(符合“完全替换”策略) - 优先更新 config/user/site.yml 的 navigation,确保包含 id: bookmarks;失败再兼容旧 navigation.yml - 无 .html 书签文件时由报错改为警告并跳过,不阻塞流程 - 导航更新日志按结果输出,不再无条件“已更新” 2) config/README.md:修正文档 - 明确配置加载为“完全替换、不合并” - 补充首次使用建议:复制 config/_default/ 到 config/user/ 3) package.json:许可证对齐 - license 从 MIT 改为 AGPL-3.0-only(与 LICENSE/README 对齐) 4) .gitignore:忽略工具目录 - 新增忽略 .serena/
178 lines
5.1 KiB
Markdown
178 lines
5.1 KiB
Markdown
# MeNav 配置目录
|
|
|
|
## 目录
|
|
|
|
- [目录概述](#目录概述)
|
|
- [配置目录结构](#配置目录结构)
|
|
- [配置加载机制](#配置加载机制)
|
|
- [模块化配置文件](#模块化配置文件)
|
|
- [网站基础配置](#网站基础配置)
|
|
- [页面配置](#页面配置)
|
|
- [配置优先级](#配置优先级)
|
|
- [配置示例](#配置示例)
|
|
- [最佳实践](#最佳实践)
|
|
|
|
## 目录概述
|
|
|
|
`config` 目录包含 MeNav 项目的所有配置文件,采用模块化的 YAML 格式组织。这些配置文件定义了网站的内容、结构、布局和功能,是定制个人导航站的核心。
|
|
|
|
## 配置目录结构
|
|
|
|
配置系统采用分层结构,清晰分离默认配置和用户配置:
|
|
|
|
```
|
|
config/
|
|
├── _default/ # 默认配置目录
|
|
│ ├── site.yml # 默认网站基础配置(含导航配置)
|
|
│ └── pages/ # 默认页面配置
|
|
│ ├── home.yml # 首页默认配置
|
|
│ ├── projects.yml
|
|
│ ├── articles.yml
|
|
│ ├── friends.yml
|
|
│ └── bookmarks.yml
|
|
└── user/ # 用户配置目录(覆盖默认配置)
|
|
├── site.yml # 用户自定义网站配置(含导航配置)
|
|
└── pages/ # 用户自定义页面配置
|
|
├── home.yml # 首页用户配置
|
|
└── ...
|
|
```
|
|
|
|
## 配置加载机制
|
|
|
|
MeNav 配置系统采用“完全替换”策略(不合并),按以下优先级选择**唯一**的一套配置目录:
|
|
|
|
1. 若存在 `config/user/`,则只加载该目录下的配置,并**完全忽略** `config/_default/`
|
|
2. 否则加载 `config/_default/` 作为默认配置
|
|
|
|
也就是说:`config/user/` 一旦存在,就需要包含一套完整的配置(例如 `site.yml` 与必要的 `pages/*.yml`),系统不会把缺失部分从默认配置补齐。
|
|
|
|
## 模块化配置文件
|
|
|
|
### 网站基础配置
|
|
|
|
`site.yml` 定义网站的基本信息和全局设置:
|
|
|
|
- 网站标题、描述和关键词
|
|
- 作者信息和版权声明
|
|
- 字体配置和主题设置
|
|
- 全局元数据和站点参数
|
|
- 个人资料和社交媒体链接
|
|
- 导航菜单配置(侧边栏导航项、页面标题和图标、页面顺序和可见性)
|
|
|
|
> **注意**:从 v1.x 版本开始,导航配置已合并到 `site.yml` 文件中,不再使用独立的 `navigation.yml` 文件。如果您从旧版本迁移,请将原 `navigation.yml` 的内容移至 `site.yml` 的 `navigation` 字段下。
|
|
|
|
### 页面配置
|
|
|
|
`pages/` 目录下的配置文件定义各个页面的内容:
|
|
|
|
- `home.yml`: 首页分类和站点列表
|
|
- `projects.yml`: 项目展示配置
|
|
- `articles.yml`: 文章列表配置
|
|
- `friends.yml`: 友情链接配置
|
|
- `bookmarks.yml`: 书签页面配置
|
|
- 自定义页面配置
|
|
|
|
## 配置优先级
|
|
|
|
配置项的优先级从高到低为:
|
|
|
|
1. 用户页面配置 (`user/pages/*.yml`)
|
|
2. 用户网站配置 (`user/site.yml`)
|
|
3. 默认页面配置 (`_default/pages/*.yml`)
|
|
4. 默认网站配置 (`_default/site.yml`)
|
|
|
|
## 配置示例
|
|
|
|
### 网站配置示例 (site.yml)
|
|
|
|
```yaml
|
|
# 网站基本信息
|
|
title: "我的个人导航"
|
|
description: "个人收藏的网站导航页"
|
|
keywords: "导航,网址,书签,个人主页"
|
|
|
|
# 个人资料配置
|
|
profile:
|
|
title: "个人导航站"
|
|
subtitle: "我收藏的精选网站"
|
|
description: "这是一个用于快速访问常用网站的个人导航页面。"
|
|
|
|
# 主题和样式设置
|
|
theme:
|
|
default: "light"
|
|
toggleIcon: true
|
|
|
|
# 字体配置
|
|
fonts:
|
|
title: "Roboto, sans-serif"
|
|
content: "Noto Sans SC, sans-serif"
|
|
|
|
# 社交媒体链接
|
|
social:
|
|
- name: "GitHub"
|
|
url: "https://github.com/username"
|
|
icon: "fab fa-github"
|
|
- name: "Twitter"
|
|
url: "https://twitter.com/username"
|
|
icon: "fab fa-twitter"
|
|
|
|
# 导航配置
|
|
navigation:
|
|
- name: "首页"
|
|
icon: "fas fa-home"
|
|
id: "home"
|
|
active: true
|
|
- name: "项目"
|
|
icon: "fas fa-project-diagram"
|
|
id: "projects"
|
|
- name: "文章"
|
|
icon: "fas fa-book"
|
|
id: "articles"
|
|
```
|
|
|
|
### 首页配置示例 (home.yml)
|
|
|
|
```yaml
|
|
# 首页分类配置
|
|
categories:
|
|
- name: "常用工具"
|
|
icon: "fas fa-tools"
|
|
sites:
|
|
- name: "Google"
|
|
url: "https://www.google.com"
|
|
description: "全球最大的搜索引擎"
|
|
icon: "fab fa-google"
|
|
- name: "GitHub"
|
|
url: "https://github.com"
|
|
description: "代码托管平台"
|
|
icon: "fab fa-github"
|
|
|
|
- name: "学习资源"
|
|
icon: "fas fa-graduation-cap"
|
|
sites:
|
|
- name: "MDN Web Docs"
|
|
url: "https://developer.mozilla.org"
|
|
description: "Web开发技术文档"
|
|
icon: "fab fa-firefox-browser"
|
|
```
|
|
|
|
## 最佳实践
|
|
|
|
1. **目录结构**:
|
|
- 总是在 `user/` 目录下创建您的配置
|
|
- 不要直接修改 `_default/` 中的文件
|
|
|
|
2. **文件命名**:
|
|
- 遵循现有的文件命名约定
|
|
- 自定义页面配置应使用有意义的名称
|
|
|
|
3. **配置管理**:
|
|
- 利用模块化结构分类管理配置
|
|
- 首次使用建议先完整复制 `config/_default/` 到 `config/user/`,再按需修改
|
|
- 定期备份您的用户配置
|
|
|
|
4. **配置验证**:
|
|
- 修改配置后先在本地构建测试
|
|
- 使用 `npm run dev` 预览更改效果
|
|
- 确保 YAML 语法正确无误
|