# 博客项目说明 本项目使用 Hugo 构建,主题为 `Ying`。以下是主要的配置说明与脚本使用指南,方便后续查阅和维护。 ## 1. 常用脚本与工具 (Scripts) 项目包含多个 PowerShell 和 Node.js 脚本,用于自动化维护、检查和部署。 ### 1.1 日常维护 * **新建文章 (`./new_post.ps1`)** * **用途**: 交互式创建新的博客文章。 * **功能**: 自动引导输入标题、Slug、分类、标签等信息,并按 `YYYY-MM-DD-Slug` 格式创建 Page Bundle 目录和文件。 * **运行**: ```powershell ./new_post.ps1 ``` * **手动构建与检查 (`./deploy.ps1`)** * **用途**: 手动执行构建,包含友链健康检查。 * **流程**: 1. 运行 `scripts/check_links.js` 检查友链连通性。 2. 如果检查通过,执行 `hugo --minify` 生成静态文件。 * **运行**: ```powershell ./deploy.ps1 ``` ### 1.2 自动化与 CI/CD 工具 以下脚本主要在 GitHub Actions (`.github/workflows/upy.yml`) 中自动运行,也可手动用于调试: * **友链数据同步 (`scripts/update_link_lite_json.ps1`)** * **功能**: 将 `themes/Ying/data/links.yaml` (YAML源数据) 转换为 `themes/Ying/static/json/link_lite.json`,供前端 JS 和检查脚本使用。 * **友链健康检查 (`scripts/check_links.js`)** * **功能**: 读取 `link_lite.json`,并发检查所有友链的可访问性。 * **依赖**: `node-fetch` (内置于 Node 18+ 或作为依赖)。 * **朋友圈数据生成 (`scripts/generate_circle_data.js`)** * **功能**: 根据友链抓取 RSS/Atom 订阅源,生成朋友圈更新数据 (`friend_circle_data.json`)。 * **依赖**: `rss-parser`. * **构建安全预处理 (`scripts/add_draft_to_hidden.ps1`)** * **功能**: 在构建前扫描 `content/post`,将标记为 `status: hidden` 的文章强制设置为 `draft: true`,防止隐私文章意外泄露到公共列表。 * **CDN 刷新 (`scripts/RefreshCDN.py`)** * **功能**: 部署完成后调用 DogeCloud API 刷新 CDN 缓存。 * **配置**: 需要在环境变量中设置 `DOGECLOUD_ACCESS_KEY` 等参数。 --- ## 2. 基础配置 (`hugo.toml`) 位于项目根目录下,控制网站的全局行为。 * **网站信息**: 标题、BaseURL、语言等。 * **固定链接 (Permalinks)**: ```toml [permalinks] post = "/:slug" ``` 文章页面使用 Front Matter 中的 `slug` 字段作为文件名(例如 `https://usj.cc/my-post.html`)。 ## 3. 主题配置 * **主题目录**: `themes/Ying/` * **友链数据**: `themes/Ying/data/links.yaml` * 添加友链请直接编辑此 YAML 文件,构建时会自动同步到 JSON。 ## 4. 文章管理指南 ### URL 设置 文章默认使用 `slug` 字段作为 URL 的文件名。 ```yaml title: "我的文章" date: 2023-01-01 slug: "my-post" ``` 生成的链接为: `https://usj.cc/my-post.html` ### 隐藏文章 如果你想写一篇不公开在列表显示的文章(但可以通过链接访问): 1. 在 Front Matter 中添加 `status: hidden`。 2. 自动化脚本会在构建时将其标记为 `draft: true` (配合特殊构建逻辑) 或进行其他处理。 *注:具体表现取决于 CI 脚本的逻辑,通常用于草稿或隐藏页。*