规范的README

前言:
  Github上浏览开源项目时通常项目根目录都有一个字说明文件README.md,该文件可以帮助开发或使用者快速的熟悉和使用这个项目。为项目写出规范的README文件是有必要的。

1 README的作用

  README是项目的自述文件,通常它 README.md 是项目的第一个入口文件,而不是急着看代码。阅读它能使得开发或使用者快速熟悉和使用该项目。

2 README应该有哪些内容

  README应该告诉阅读者如何使用你的模块或工程,如果安装和使用它。标准的方式编写README将使得阅读理解它更轻松,维护更加方便。
  在Github上有一个关于README的开源项目 RichardLitt/standard-readme ,可以访问它,本篇文章也是基于此规范进行讨论。
  以下是一个好的README应该具有的内容。

3 标题(Title)

  标题为必填项,一般与仓库名、文件夹名或包管理器名同名。标题允许写副标题,副标题加括号斜体表示。

1
# 主标题 _(副标题)_

4 横幅(banner)

  可选项,横幅用于丰富显示效果,提供链接到本地存储库。
  要求:

  • 不能有自己的标题;
  • 必选链接到当前存储库中的本地映像;
  • 必选直接出现在标题后面;

5 徽章(badges)

  可选项,徽章用于丰富显示效果,提供快速跳转链接。

6 简述(Short description)

  必选项,对仓库进行简单概述,方便阅读者快速了解项目。
  要求:

  • 不能有自己的标题;
  • 必选少于120个字符;
  • 不能以 > 开始;
  • 一定是在它自己的行上;
  • 必选符合包管理器的 描述 字段;
  • 必选符合Github的描述(如果在GitHub上);

7 详细描述(Long description)

  可选项,对仓库进行详细描述。
  要求:

  • 不能有自己的标题;
  • 如果任何文件夹、存储库或包管理器名称不匹配,则必选在这里说明原因;

  建议:

  • 如果内容较多,应考虑将部分内容放到到背景部分;
  • 建议描述构建仓库的主要原因;
  • 大致的描述模块信息;

8 目录(Table of contents)

  小于100行的README为可选项,大于100行的README为必选项。
  要求:

  • 必选链接到文件中的所有Markdown部分;
  • 必选从下一节开始,不要包含标题或目录标题;
  • 必选至少有一个深度,也即捕获所有的 ## 二级标题;

  建议:

  • 可以捕获第三个和第四个深度标题。如果是长目录,这些是可选的;

9 安全(Security)

  可选项,如果有强调安全问题则可描述。

10 背景(Background)

  可选项。
  要求:

  • 包含动机;
  • 包含抽象依赖关系;
  • 包含只是来源;

11 安装(Install)

  必选项,说明安装和使用的方法。
  要求:

  • 说明如何安装和使用仓库;
  • 若有其他环境依赖,说明依赖哪些环境及说明安装环境的方法;

12 用法(Usage)

  必选项,说明使用仓库的方法。

13 API

  可选项,API接口和对象。
  要求:

  • 描述签名、返回类型、回调和事件;
  • 指明不容易理解的类型;
  • 描述注意事项;
  • 如果使用外部API生成器,应该链接到外部API的描述文件。

14 维护者(Maintainers)

  可选项,说明仓库的开发维护人员。
  要求:

  • 列出参与该仓库维护的人员,给出他们的联系方式,Github一般给链接或邮件;

  建议:

  • 必选是重要的开发和维护人员,而不是列出所有有访问权限的人。

15 致谢(Thanks)

  可选项,说明对该仓库构建提供过帮助的人或事。
  要求:

  • 说明对项目的开发有重要帮助的任何人或任何事情;
  • 标明公共链接,如果有的话;

16 贡献(Contributing)

  必选项,说明用户可参与仓库的权限和方法。
  要求:

  • 说明用户可以提问的地方;
  • 说明是否可接受PR;
  • 列出所有贡献的要求,例如在提交时要有签名;

  建议:

  • 更详细的描述可以链接到 如何贡献.md 文件;
  • 链接到 如何贡献规范.md 文件,对贡献的规范操作进行更详细的介绍;

17 许可证(License)

  必须项,关于许可证的描述。
  要求:

  • 声明许可证全名或标识符,提供链接到许可证文件。
  • 声明许可证的持有人;
  • 放在文件末;

18 模板示例

  以下是可套用的README.md规范模板。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# 标题(Title)

![banner]()

[![label-message-color](https://img.shields.io/badge/label-message-color "label-message-color")](https://img.shields.io/badge/label-message-color)

[![label-message-color](https://img.shields.io/badge/label-message-color?style=plastic&logo=appveyor "label-message-color")](https://img.shields.io/badge/label-message-color?style=plastic&logo=appveyor)

这里写简述。

这里写详细描述。

## 目录(Sections)

- [安全(Security)](#安全(Security))
- [背景(Background)](#背景(Background))
- [安装(Install)](#安装(Install))
- [用法(Usage)](#用法(Usage))
- [API](#API)
- [维护者(Maintainers)](#维护者(Maintainers))
- [致谢(Thanks)](#致谢(Thanks))
- [贡献(Contributing)](#贡献(Contributing))
- [许可证(License)](#许可证(License))

## 安全(Security

## 背景(Background)

## 安装(Install)

## 用法(Usage)

## API

## 维护者(Contributing)

## 致谢(Thanks)

## 贡献(Contributing)

## 许可证(License)