菜单

贡献工作流程

相关源文件

本文档介绍了向 HowToCook 仓库贡献的流程,涵盖了从创建新菜谱到合并您更改的各个方面。有关菜谱格式和标准的信息,请参阅 菜谱格式标准

概述

HowToCook 仓库被设计为一个社区驱动的食谱,强调精确、对程序员友好的菜谱。贡献流程通过自动化检查和人工审查确保所有菜谱都保持一致的质量和格式。

来源: README.md27-31 .github/workflows/ci.yml .github/workflows/build.yml

准备贡献

要贡献到仓库,您需要

  1. 在 GitHub 上 Fork 仓库
  2. 将您的Fork克隆到本地计算机
  3. 使用 npm install 安装依赖项

在贡献之前,您应该了解仓库的特定结构

目录目的
dishes/包含按类别组织的菜谱文件
starsystem/包含难度评级(0-5 星)
tips/包含烹饪技巧和指南
.github/包含工作流和模板

来源: README.md59-363 .github/readme-generate.js12-62

创建新菜谱

创建新菜谱时,您应该

  1. 识别合适的分类目录(例如,dishes/vegetable_dish/
  2. dishes/template/示例菜/示例菜.md 复制模板
  3. 为您的菜谱创建适当的文件/文件夹结构
  4. 填写所有必需的部分(配料、步骤等)
  5. 使用星号(★)分配难度评级

来源: README.md31

拉取请求流程

Pull Request 生命周期

下图展示了完整的 Pull Request 生命周期

来源: .github/workflows/ci.yml .github/workflows/build.yml .github/pull_request_template.md

许可要求

所有贡献都必须根据 The Unlicense 进行许可,将其置于公共领域。Pull Request 模板要求您确认

  • 您的内容不侵犯任何版权
  • 您授权根据 The Unlicense 进行内容发布

这以 PR 模板中的复选框形式实现,在您的 PR 获得审核之前必须勾选

- [ ] I confirm my content does not involve copyright issues, and I authorize it under The Unlicense.

来源: .github/pull_request_template.md7-15

质量控制系统

该仓库使用多种自动化检查来确保菜谱的质量和一致性

Linting 系统

Linting 工具在 package.json 文件中定义

工具目的
markdownlint确保 Markdown 格式一致
textlint检查文本内容是否存在问题
manual_lint.js验证菜谱特定要求

这些工具会在您提交 Pull Request 时自动运行,并在人工审核前必须通过。

来源: package.json16-22 .github/workflows/ci.yml .markdownlint.json

合并后自动化

当您的贡献被合并后,会发生几个自动化过程

  1. README 生成:

    • readme-generate.js 脚本会更新 README.md
    • 它会将您的菜谱添加到相应的类别和难度级别
  2. 星级系统更新:

    • 菜谱按难度(1-5 星)分类
    • 脚本会更新星级系统索引文件(1Star.md、2Star.md 等)
  3. Docker 镜像创建:

    • 新的 Docker 镜像将被构建并推送到 GitHub Container Registry
    • 这将使您的菜谱能够通过 Web 界面立即访问

readme-generate.js 脚本会检查每个菜谱文件以确定

  • 它属于哪个类别
  • 它的难度级别(通过计算星号)
  • 在 README 和文档中的放置位置

来源: .github/workflows/build.yml .github/readme-generate.js

本地测试您的贡献

在提交 PR 之前,建议在本地测试您的更改

  1. 运行 linting 检查

  2. 生成 README(可选)

这有助于及早发现格式问题,并确保您的 PR 有更高的几率通过自动化检查。

来源: package.json16-22

常见问题与解决方案

问题解决方案
Linting 失败检查格式,确保 Markdown 语法正确
缺少部分确保菜谱包含模板中的所有必需部分
测量单位不正确使用精确的测量单位(克、毫升等)
缺少星级评分添加 ★ 符号以指示难度

仔细遵循模板并运行本地检查有助于避免大多数常见问题。

总结

HowToCook 的贡献流程旨在确保高质量、一致的菜谱,同时使每个人都能轻松贡献。通过遵守模板和格式要求,您可以帮助构建这个社区驱动的、对程序员友好的菜谱库。

请记住,所有贡献都必须根据 The Unlicense 进行许可,并且在合并前必须通过自动化检查和人工审核。