要写文档了,emmm,先写个文档工具吧——DocMarkdown


前言

之前想用Markdown来写框架文档,找来找去发现还是Jekyll的多,但又感觉不是很合我的需求
于是打算自己简单弄一个展示Markdown文档的网站工具,要支持多版本、多语言、导航、页内导航等,并且支持Github Pages免费站点

组件选择

我自己呢比较喜欢C#,恰好现在ASP.Net Core Blazor支持WebAssembly,绝大部分代码都可以用C#完成
对于Markdown的分析,可以使用markdig组件(有个缺点,目前它把生成Html的代码也放到了程序集里,增加了不少的程序集大小,增加了载入时间)
展示组件可以使用Blazorise,有挺多组件能用,还有几个风格能选,使用比较方便

配置

为了能提供较好的通用性,我定义了以下配置

配置文件

站点目录必须包含config.json配置文件,
配置文件声明了DocMarkdown该从哪里读取Markdown文档并建立目录关系。

config.json是一个JSON格式的配置文件,以下配置是一个完整的配置文件示例。

{
  "Title": "DocMarkdown",
  "Icon": "logo.png",
  "BaseUrl": "https://raw.githubusercontent.com/who/project",
  "Path": "docs",
  "Languages": [
    {
      "Name": "简体中文",
      "Value": "zh-cn",
      "CatalogText": "本文内容"
    }
  ],
  "Versions": [
    {
      "Name": "DocMarkdown 1.0",
      "Value": "1.0",
      "Path": "main"
    }
  ]
}

标题

$.Title属性值决定了显示于左上角(默认主题)的文档标题名称。
该属性必须填写。

图标

$.Icon属性决定了显示于文档标题左侧的图标路径。
该属性可不存在或为空。

基础地址

$.BaseUrl属性决定了整个Markdown文档的路径。
该属性必须填写,可以为空字符串。
当属性为空字符串或相对路径时,将使用本域名内资源。

路径地址

$.Path属性将附加于每个Markdown文档路径之前。
该属性可以不存在。

多语言

$.Languages属性用于定义文档的多语言支持。
该属性可以不存在。
属性内容必须为数组。
第一个元素将作为默认语言。

语言名称

$.Languages[0].Name属性用于显示语言名称。
该属性必须填写。

语言值

$.Languages[0].Value属性决定了该语言的文件名称。
该属性必须填写。
属性内容将附加在Markdown文档路径扩展名之前。例如.zh-cn

目录文本

$.Languages[0].CatalogText属性决定了选择该语言时,文档页右侧的导航目录标题。
该属性必须填写。

多版本

$.Versions属性用于定义文档的多版本支持。
该属性可以不存在。
属性内容必须为数组。
第一个元素将作为默认版本。

版本名称

$.Versions[0].Name属性用于显示版本名称。
该属性必须填写。

版本值

$.Languages[0].Value属性决定了该版本在Url上的值。
该属性必须填写。

版本路径

$.Languages[0].Path属性决定了该版本在Url上的值。
该属性必须填写。

导航配置

文档根路径必须存在nav.json,如果存在多语言,每个语言都需要一份导航配置。
以点击访问
Github源码地址,点击访问