菜单

README 生成

相关源文件

本页面记录了 HowToCook 仓库中的自动 README 生成系统。该系统负责处理仓库中的所有食谱 markdown 文件,并动态生成主 README.md 文件和根据难度级别(1-5 星)对食谱进行分类的 starsystem 索引文件。

有关 MkDocs 配置(这也是文档系统的一部分)的信息,请参阅 MkDocs 配置

系统概览

README 生成系统会自动处理仓库中的所有食谱 markdown 文件,以创建有组织、分类和索引的 README.md 文件,作为用户的主要入口点。它还维护单独的索引文件,按难度级别对食谱进行分组。

来源:.github/readme-generate.js1-246 README.md1-390 starsystem/1Star.md1-23 starsystem/2Star.md1-72 starsystem/3Star.md1-111 starsystem/4Star.md1-79 starsystem/5Star.md1-19

核心组件

README 生成系统包含以下核心组件

  1. readme-generate.js - 协调整个过程的主脚本
  2. readme_template.md - 定义 README 结构模板文件
  3. Star 难度索引系统 - 按难度对食谱进行分类的逻辑
  4. 分类组织系统 - 按类型/类别分组食谱的逻辑

来源:.github/readme-generate.js1-246 .github/templates/readme_template.md1-48

数据流和处理

README 生成系统通过多个数据处理阶段,将单个食谱文件转化为有组织的文档结构。

来源:.github/readme-generate.js125-207

星级评分系统

系统通过计算内容中的星形符号(★)来分析每个食谱文件以确定其难度级别。然后,它将食谱分为五个难度级别,并为每个级别生成单独的索引文件。

来源:.github/readme-generate.js65-123 starsystem/1Star.md1-23 starsystem/2Star.md1-72 starsystem/3Star.md1-111 starsystem/4Star.md1-79 starsystem/5Star.md1-19

星数统计逻辑

系统通过计算食谱内容中的星形符号来确定食谱难度

来源:.github/readme-generate.js65-73

类别组织

系统根据文件在目录结构中的位置将食谱组织到多个类别中。类别在脚本的 categories 对象中定义

来源:.github/readme-generate.js12-63 README.md59-198

类别定义对象

类别结构在脚本中定义,包含目录名称与显示标题的映射

来源:.github/readme-generate.js12-63

模板系统

README 生成依赖模板来构建其输出结构。主模板是 readme_template.md,其中包含将被生成内容替换的占位符。

模板占位符

README 模板包含四个主要占位符

  1. {{before}} - 用于介绍性内容,如设备和准备技巧
  2. {{index_stars}} - 用于基于难度的食谱索引
  3. {{main}} - 用于按类别组织的食谱列表
  4. {{after}} - 用于高级烹饪知识内容

来源:.github/templates/readme_template.md1-48 .github/readme-generate.js186-193

生成工作流

完整的 README 生成工作流遵循以下步骤

  1. 加载 README 和 MkDocs 的模板
  2. 处理仓库中的所有 markdown 文件
  3. 根据文件在目录结构中的位置进行分类
  4. 计算每个食谱的星数以确定难度
  5. 生成 README 的分类部分
  6. 生成星级系统索引文件
  7. 应用模板创建最终的 README 和 MkDocs 配置
  8. 将输出文件写入磁盘

来源:.github/readme-generate.js125-207

函数职责

核心脚本函数在生成过程中承担不同的职责

函数名称目的关键操作
main()主要执行流程协调整体流程
getAllMarkdown()查找内容文件递归查找所有 .md 文件
countStars()确定难度计算内容中的 ★ 符号数量
organizeByStars()创建难度索引按星数对食谱进行分组
inlineReadmeTemplate()格式化 README 条目创建食谱列表项
categoryReadmeTemplate()格式化分类部分创建分类标题
inlineMkdocsTemplate()格式化 MkDocs 条目创建 MkDocs 导航项
categoryMkdocsTemplate()格式化 MkDocs 分类创建 MkDocs 分类部分

来源:.github/readme-generate.js125-243

系统集成

README 生成系统与仓库的整个文档系统集成。

来源: .github/readme-generate.js1-246 README.md1-390

使用和执行

README生成脚本作为存储库CI/CD管道的一部分自动执行,但也可以手动运行

  1. 确保已安装Node.js
  2. 导航到存储库根目录
  3. 运行 node .github/readme-generate.js

该脚本将

  1. 处理 dishes/ 目录中的所有食谱文件
  2. 计算星级以确定难度
  3. 创建或更新星级系统索引文件
  4. 生成包含所有类别和食谱的README.md
  5. 生成mkdocs.yml配置文件

来源: .github/readme-generate.js245-246

总结

README生成系统是HowToCook存储库文档基础设施的关键组成部分。它自动处理食谱文件,通过主README.md和基于难度的星级系统索引生成有组织、可导航的文档。该系统使用模板文件和预定义的类别来确保格式一致性,同时也能接纳新的食谱贡献。

该系统体现了一种程序化的文档管理方法,与存储库中对程序员烹饪指令精度和清晰度的关注相一致。