HowToCook/CONTRIBUTING.md
2022-04-06 13:32:17 +08:00

168 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 如何贡献
## 简介
直接修改/添加做菜指南并提交 Pull request 即可。
在写新菜谱时,请复制并修改已有的模板: [示例菜](./dishes/template/示例菜/示例菜.md)。
我们建议在贡献之前,阅读仓库的[行为守则](./CODE_OF_CONDUCT.md)。
## 内容规范
菜谱提交者**无需**阅读此内容规范。以下内容已经以简明易懂的方式包含在示例模板中。项目的维护者会在你的 PR 中提出建议, 并协助修改。
本项目的 Motivation 要求菜谱满足以下规范,不符合规范的菜谱将不会被合并到代码库中。项目的维护者维护此文档, 作为正式的标准与共识。
- 每一道菜谱至少应包含`原材料与工具`, `计算`, `操作`三部分内容。
`原材料与工具`应列出本菜品需要的除`假想已准备好的物品`外的所有原材料与厨具。
`计算`应定量列出本菜品所需的原材料的量。(无论与人数是否相关)
`操作`应说明菜品的制作步骤。
- 菜品的制作步骤应当明确无歧义(non-ambiguous),并尽可能准确(accurate)。有歧义(ambiguous)的描述是不可接受的,而不准确(inaccurate)或不精确(imprecise)的描述是可以接受的。
> 不准确的菜谱会导致菜品口味有少许偏差,不明确的菜谱会导致做菜人的心态有明显不安。
举例:有歧义的描述
```
# 解释:此处对于盐量的描述是有歧义的。
# 因为对于某个数量的盐,用户无法得出确定的客观结论:此数量是否属于"少量"。
加入少量盐
加入几滴蚝油
将锅加热至八分热
撒上少许葱花
煮至鸡肉断生
```
举例:无歧义的描述
```
# 解释此处对于锅的温度的描述是不准确的可能是200摄氏度左右的任何温度但这个描述是无歧义的。
# 因为对于锅的某个状态,用户可以进行水滴测试,并得出确定的客观结论:此状态要么符合要求,要么不符合要求。
加热锅,直至"滴入几滴水时,水珠能够在锅上迅速滚动而不吸附"
加热锅,直至观察到莱顿弗罗斯特现象
加入 5 ml 酱油
等到水沸腾后
继续煮,直到汤汁剩下二分之一
煎至表面呈金黄色
继续翻炒两分钟
# 食材所可能粘附的蛋液的量是确定的
裹上蛋液
# 在'计算'中已提及将用到葱花的量
撒上葱花
```
考虑到现实因素,对于某些在家庭厨房中确实难以明确描述的因素,可以作为特例排除。例如
```
# 在描述燃气灶火焰强度时
文火,小火,中火,大火 等
# 在描述颜色时
金黄色 等
# 在描述硬度时
变软 变硬
```
- 菜品的`制作步骤`应当完整(complete)。这意味着, 在执行完所有操作步骤后, 菜品已经被完成。
- 菜品的`原材料与工具`应当完整(complete)。这意味着, 在执行操作步骤时, 没有用到`原材料与工具`中未提到的物品。
## 审核员须知
下面的内容仅供参与菜谱审批的人员参考。
审批时,最重要的是避免歧义:保证按照菜谱尽可能没有灵活发挥空间。所有歧义都要指出。就是,无论是个大厨还是个萌新,只要按照菜谱,做出来的效果应该完全一样。
- 绝对不允许菜谱中出现灵活发挥的空间。不允许让厨师自己斟酌加入的量。不允许出现 `适量` `少量`
- 绝对不允许出现允许厨师自己决策的步骤。例如:`可以根据自己的喜好调整煮的时间`这类语句
- 针对单个大小体积重量差距极大的物体,不允许用个来约束,要额外标注重量(g)
- 勺 不是一个可靠的单位。建议换成毫升 ml
- 确保文件路径合理,文件引用正确,没有签入无意义的文件
- 对蒜的描述,指的是三头还是三瓣可能产生歧义
- 允许出现 `小火` `中火` `大火`
- 任何材料中间的标点符号,例如顿号,都需要额外确认是否是`可以替代的或`,还是`必须同时添加的和`
- 如果一个原材料仅仅计算了一次,而引用了多次,必须额外确认每次引用时指的量的多少
- 确保没有破坏模板的一二级标题格式
- 确保没有删除模板中必需的内容
- 确保删除干净了模板里的注释
- 确保分类正确,不和已有的菜名重复
- 确保签入的内容都符合 CC0 协议。尤其注意图片是否有水印!
- 确保没有签入任何个人身份信息、EUII、Email 地址、GitHub 用户名
## 文档网站构建
除了直接部署 `README.md` 的 HTML还可以利用`mkdocs-material`来渲染 markdown 文件。这会得到更加漂亮的页面。
需求: Python > 3.6
### 调试
```bash
pip install -r requirements.txt
mkdocs serve
```
可以在本地 <http://localhost:8000/> 打开。
### 编译
```bash
mkdocs build --strict
```
生成静态 HTML 网页, 存在于在`site/`文件夹下。Hosting 的时候指向到`site/index.html`即可。
> **_Note:_**
> 由于`mkdocs`不原生支持`*.md`存在于根目录下,只能添加了`mkdocs-same-dir`这个插件来做workaround。
> 通常来说mkdoc会自动检查文件夹里的各种文件 (eg *.jpg)然后生成相对应的链接。由于这个
> workaround根目录下现在只能检测到`.md`文件。这个限制并不影响剩下的文件夹(比方说`tips`和`dishes`)。
## 手工 lint
如果需要检查文档中的不规范,可以手工运行 lint 操作。
需求Ruby
### 安装 markdownlint
```bash
sudo gem install mdl # Linux
```
```powershell
gem install mdl # Windows, with administrators permission.
```
### 运行 lint
```bash
mdl . -r ~MD036,~MD024,~MD004,~MD029
```
## 生成 Readme 和 mkdocs
一般的,每次 master 分支发生变更后,会自动生成 Readme 和 mkdocs 文件。但是,在某些情况下可能需要开发者手工生成这些文件。
需求node,npm
```bash
node ./.github/readme-generate.js
```
## 自动 markdown 修复
框架支持一些自动 markdown 错误修正功能。一般的,每次 master 分支发生变更后,会自动修正。但是,在某些情况下可能需要开发者手工修正。
需求node,npm
```bash
npm install
./node_modules/.bin/textlint . --fix
```