docsify操作和Docker部署流程文档
前言
根据官网介绍:
docsify是一个神奇的文档网站生成器。
docsify 会动态生成您的文档网站。与 GitBook 不同,它不会生成静态 html 文件。相反,它会智能地加载和解析您的Markdown文件,并将其显示为网站。要开始使用它,您需要做的就是创建一个索引 .html 并将其部署在 GitHub Pages 上。
当然我们也可以使用 Docker 非常方便的容器化部署。
内部 API 管理工具我们使用 yapi,但对于公开 API 获取和使用就不是很方便,所以对于有公开 API 文档需求的小伙伴来说,这正是一个非常优秀的查看和检索工具。
这里有一份 docker部署的 docsify 上的本文复刻版本 https://docsify.work.asrtts.cn/#/guide (点击查看)
下面本文会进行 docsify 的初始化、目录结构、部分功能介绍和部署介绍。
想部署快速验证可以直接看第七小节。
正文
本文档旨在帮助操作人员快速使用docsify构建文档,并完成相应的部署和测试。
一、初始化项目
1.1 安装node.js
下载地址:https://nodejs.org/
下载完成后点击安装
查看node版本,命令:
node -v
1.2 安装docsify-cli工具
推荐全局安装 docsify-cli 工具,可以方便地创建及在本地预览生成的文档。
命令行执行:
npm i docsify-cli -g
1.3 初始化文档结构
创建一个本地文件夹docs作为编写文档的位置,执行命令:
docsify init ./docs
初始化成功后,./docs目录下会创建以下几个文件:
-| docs/-| .nojekyll 用于阻止 GitHub Pages 忽略掉下划线开头的文件-| index.html 入口文件-| README.md 会做为主页内容渲染
直接编辑 docs/README.md 就能更新文档内容,也可以通过嵌入文件的方式添加内容。
例如,可以在README.md文件的末尾加上这一行:
[filename](../_media/example.md ':include')
example.md 文件的内容将会直接接续主页的末尾显示。
1.4 本地实时预览
在./docs目录的上级目录中执行命令:
docsify serve docs
即可启动一个本地服务器,可以方便地实时预览效果。默认访问地址为: http://localhost:3000
二、制作多页文档
2.1 多页面文档结构
如果需要创建多个页面,或者需要多级路由的网站,在 docsify 里也能很容易的实现。例如创建一个 guide.md 文件,那么对应的路由就是 /#/guide。
假设目录结构如下:
.
└── docs├── README.md├── guide.md└── zh-cn├── README.md└── guide.md
那么对应的访问页面是:
docs/README.md => http://domain.com
docs/guide.md => http://domain.com/guide
docs/zh-cn/README.md => http://domain.com/zh-cn/
docs/zh-cn/guide.md => http://domain.com/zh-cn/guide
2.2 定制侧边栏
默认情况下侧边栏会通过 Markdown 文件自动生成。如果要定制侧边栏,需要创建_sidebar.md文件,也可以自定义文件名。
首先需要修改index.html文件,配置loadSidebar选项:
<!-- index.html --><script>window.$docsify = {loadSidebar: true,//设置为 true 后会加载 _sidebar.md 文件loadSidebar: 'summary.md',//添加此项可以设置为自定义加载的文件名subMaxLevel: 2,//生成目录的最大层级,默认值为0,即自定义侧边栏后默认不会再生成目录}
</script>
<script src="//cdn.jsdelivr.net/npm/docsify/lib/docsify.min.js"></script>
接着创建 _sidebar.md 文件,内容如下:
<!-- docs/_sidebar.md -->* [首页](zh-cn/)
* [指南](zh-cn/guide)
此处需要 ./docs 目录下存在 .nojekyll 命名的空文件,用以阻止 GitHub Pages 忽略命名为下划线开头的文件。
2.3 嵌套的侧边栏
如果希望在浏览到一个目录时,只显示这个目录自己的侧边栏,可以通过在每个文件夹中添加一个 _sidebar.md 文件来实现这一点。
_sidebar.md 的加载逻辑是从每层目录下获取文件,如果当前目录不存在该文件则回退到上一级目录。例如当前路径为 /zh-cn/more-pages 则从 /zh-cn/_sidebar.md 获取文件,如果不存在则从 /_sidebar.md 获取。可以配置 alias 跳过此回退过程,直接读取文件。
<script>window.$docsify = {loadSidebar: true,alias: {'/.*/_sidebar.md': '/_sidebar.md'}}
</script>
也可以在一个子目录中创建一个 README.md 文件来作为此路由的默认页面。
2.4 页面标题
一个页面的 title 标签是由侧边栏中选中条目的名称所生成的,也可以设置为用侧边栏中选定的条目名称作为页面标题。
<!-- docs/_sidebar.md -->
* [Home](/)
* [Guide](guide.md "The greatest guide in the world")
三、定制导航栏
如果要定制导航栏,首先修改index.html文件,添加导航栏:
<!-- index.html --><body><nav><a href="#/">EN</a><a href="#/zh-cn/">中文</a></nav><div id="app"></div>
</body>
接着需要配置loadNavbar:
<!-- index.html --><script>window.$docsify = {loadNavbar: true,//设置为true后会加载 _navbar.md 文件loadNavbar: 'nav.md',//添加此项可以自定义加载的文件名}
</script>
<script src="//cdn.jsdelivr.net/npm/docsify/lib/docsify.min.js"></script>
然后创建需要加载的Markdown文件:
<!-- _navbar.md -->* [En](/)
* [中文](/zh-cn/)
如果导航内容过多,可以写成嵌套的列表,会被渲染成下拉列表的形式。
<!-- _navbar.md -->* 入门* [快速开始](zh-cn/quickstart.md)* [多页文档](zh-cn/more-pages.md)* [定制导航栏](zh-cn/custom-navbar.md)* [封面](zh-cn/cover.md)* 配置* [配置项](zh-cn/configuration.md)* [主题](zh-cn/themes.md)* [使用插件](zh-cn/plugins.md)* [Markdown 配置](zh-cn/markdown.md)* [代码高亮](zh-cn/language-highlight.md)
_navbar.md 加载逻辑和 sidebar 文件一致,从每层目录下获取。
四、定制封面页
在index.html中添加封面页的配置:
<script>window.$docsify = {coverpage: true,//设置为true后会加载 _coverpage.md 文件coverpage: 'cover.md',//添加此项可以自定义加载的文件名coverpage: ['/', '/zh-cn/'],//也可同时设置多个页面的封面coverpage: {//也可同时设置多个封面并指定具体文件名'/': 'cover.md','/zh-cn/': 'cover.md',},}
</script>
<script src="//cdn.jsdelivr.net/npm/docsify/lib/docsify.min.js"></script>
添加_coverpage.md文件来配置封面页:
<!-- _coverpage.md -->![logo](_media/icon.svg)# docsify <small>3.5</small>> 一个神奇的文档网站生成器。- 简单、轻便 (压缩后 ~21kB)
- 无需生成 html 文件
- 众多主题[GitHub](https://github.com/docsifyjs/docsify/)
[Get Started](#docsify)
目前的背景是随机生成的渐变色,也可以自定义背景色或者背景图。在文档末尾用添加图片的 Markdown 语法设置背景。
<!-- _coverpage.md --># docsify <small>3.5</small>[GitHub](https://github.com/docsifyjs/docsify/)
[Get Started](#quick-start)<!-- 背景图片 -->![](_media/bg.png)<!-- 背景色 -->![color](#f0f0f0)
五、其他定制项
5.1 常规配置项
window.$docsify 里的配置项,除以上内容涉及的部分外,此处还将介绍一些常用的选项。详细内容请查看https://docsify.js.org/ 。
repo
配置仓库地址或者 username/repo 的字符串,会在页面右上角渲染一个 GitHub Corner 挂件。默认值为null。
window.$docsify = {repo: 'docsifyjs/docsify',// orrepo: 'https://github.com/docsifyjs/docsify/',
};
maxLevel
默认情况下会抓取文档中所有标题渲染成目录,可配置最大支持渲染的标题层级。默认值为6。
window.$docsify = {maxLevel: 4,
};
hideSidebar
这个选项用来完全隐藏侧边栏,侧边栏的任何内容都不会被渲染。默认值为true。
window.$docsify = {hideSidebar: true,
};
auto2top
设置切换页面后是否自动跳转到页面顶部。默认值为false。
window.$docsify = {auto2top: true,
};
homepage
设置首页文件加载路径。适合不想将 README.md 作为入口文件渲染,或者是文档存放在其他位置的情况使用。默认值为 README.md 。
window.$docsify = {homepage: 'home.md',//更改首页文件为/home.mdhomepage:'https://raw.githubusercontent.com/docsifyjs/docsify/master/README.md',//更改为仓库地址
};
basePath
设置文档加载的根路径,可以是二级路径或者是其他域名的路径。
window.$docsify = {basePath: '/path/',// 直接渲染其他域名的文档basePath: 'https://docsify.js.org/',// 或者直接渲染其他仓库basePath:'https://raw.githubusercontent.com/ryanmcdermott/clean-code-javascript/master/',
};
relativePath
默认值为false。如果该选项设为 true ,那么链接会使用相对路径。
window.$docsify = {relativePath: true,//启用相对路径
};
例如目录结构如下时:
.
└── docs├── README.md├── guide.md└── zh-cn├── README.md├── guide.md└── config└── example.md
如果启用了相对路径,当前链接是 http://domain.com/zh-cn/README ,对应的链接会解析为:
guide.md => http://domain.com/zh-cn/guide
config/example.md => http://domain.com/zh-cn/config/example
../README.md => http://domain.com/README
/README.md => http://domain.com/README
logo && name && themeColor
logo是在侧边栏中出现的网站图标,可以使用CSS来更改大小。
name是文档标题,会显示在侧边栏顶部,也可以使用自定义 HTML 代码来方便地定制。
themeColor为主题色。
window.$docsify = {logo: '/_media/icon.svg',name: 'docsify',// orname: '<span>docsify</span>',themeColor: '#3F51B5',
};
nameLink
点击文档标题后跳转的链接地址。默认值:window.location.pathname
window.$docsify = {nameLink: '/',// 按照路由切换nameLink: {'/zh-cn/': '/zh-cn/','/': '/',},
};
alias
定义路由别名,可以更自由的定义路由规则。 支持正则。
window.$docsify = {alias: {'/foo/(.*)': '/bar/$1','/zh-cn/changelog': '/changelog','/changelog':'https://raw.githubusercontent.com/docsifyjs/docsify/master/CHANGELOG','/.*/_sidebar.md': '/_sidebar.md',},
};
autoHeader
同时设置 loadSidebar 和 autoHeader 为true时,可以根据 _sidebar.md 的内容自动为每个页面增加标题。
window.$docsify = {loadSidebar: true,autoHeader: true,
};
5.2 常用插件
此处介绍部分常用插件,详细内容请查看https://docsify.js.org/ 。
全文搜索 - Search
全文搜索插件会根据当前页面上的超链接获取文档内容,在 localStorage 内建立文档索引。默认过期时间为一天,可以自己指定需要缓存的文件列表或者配置过期时间。
<script>window.$docsify = {search: 'auto', // 默认值search : ['/', // => /README.md'/guide', // => /guide.md'/get-started', // => /get-started.md'/zh-cn/', // => /zh-cn/README.md],// 完整配置参数search: {maxAge: 86400000, // 过期时间,单位毫秒,默认一天paths: [], // or 'auto'placeholder: 'Type to search',// 支持本地化placeholder: {'/zh-cn/': '搜索','/': 'Type to search'},noData: 'No Results!',// 支持本地化noData: {'/zh-cn/': '找不到结果','/': 'No Results'},// 搜索标题的最大层级, 1 - 6depth: 2,hideOtherSidebarContent: false, // 是否隐藏其他侧边栏内容// 避免搜索索引冲突// 同一域下的多个网站之间namespace: 'website-1',// 使用不同的索引作为路径前缀(namespaces)// 注意:仅适用于 paths: 'auto' 模式//// 初始化索引时,我们从侧边栏查找第一个路径// 如果它与列表中的前缀匹配,我们将切换到相应的索引pathNamespaces: ['/zh-cn', '/ru-ru', '/ru-ru/v1'],// 您可以提供一个正则表达式来匹配前缀。在这种情况下,// 匹配到的字符串将被用来识别索引pathNamespaces: /^(\/(zh-cn|ru-ru))?(\/(v1|v2))?/}}
</script>
<script src="//cdn.jsdelivr.net/npm/docsify/lib/docsify.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/docsify/lib/plugins/search.min.js"></script>
当执行全文搜索时,该插件会忽略双音符(例如,“cafe” 也会匹配 “café”)。像 IE11 这样的旧版浏览器需要使用以下 String.normalize() polyfill 来忽略双音符:
<script src="//polyfill.io/v3/polyfill.min.js?features=String.prototype.normalize"></script>
图片缩放 - Zoom image
在 index.html 文件中引入 zoom-image.min.js 即可:
<script src="//cdn.jsdelivr.net/npm/docsify/lib/plugins/zoom-image.min.js"></script>
鼠标放到一张图片上时会出现缩小或者放大的图标,点击后就可以改变图片的形态。
复制到剪切板
在所有的代码块上添加一个简单的Click to copy按钮来允许用户从你的文档中轻易地复制代码。在 index.html 文件中引入 docsify-copy-code 即可:
<script src="//cdn.jsdelivr.net/npm/docsify-copy-code/dist/docsify-copy-code.min.js"></script>
字数统计
提供统计中文汉字和英文单词的功能,并且排除了一些markdown语法的特殊字符例如*、-等。需要在 index.html 文件中引入 countable.js :
<script src="//unpkg.com/docsify-count/dist/countable.js"></script>
同时添加count配置项:
window.$docsify = {count:{countable:true,fontsize:'0.9em',color:'rgb(90,90,90)',language:'chinese'}
}
代码高亮
docsify内置的代码高亮工具是 Prism。Prism 默认支持的语言如下:
Markup - markup, html, xml, svg, mathml, ssml, atom, rss
CSS - css
C-like - clike
JavaScript - javascript, js
添加额外的语法支持需要通过CDN添加相应的语法文件,比如需要添加java语法支持时:
<scriptsrc="https://cdn.jsdelivr.net/npm/prismjs@1.22.0/components/prism-java.min.js"></script>
要使用语法高亮,需要在代码块第一行添加对应的语言声明,示例如下:
```html
<p>This is a paragraph</p>
<a href="//docsify.js.org/">Docsify</a>
``````java
System.out.println("hello");
```
5.3 Markdown 配置
内置的 Markdown 解析器是 marked,可以修改它的配置。同时可以直接配置 renderer。
window.$docsify = {markdown: {smartypants: true,renderer: {link: function() {// ...}}}
}
也可以完全定制 Markdown 解析规则:
window.$docsify = {markdown: function(marked, renderer) {// ...return marked}
}
六、文档语法扩展
docsify 扩展了一些 Markdown 语法,可以让文档更易读。详细内容查看https://docsify.js.org/ 。
6.1 强调内容
语法为 !> 内容
!> 一段重要的内容,可以和其他 **Markdown** 语法混用。
6.2 普通提示
语法为 ?> 内容
?> _TODO_ 完善示例
6.3 忽略编译连接
当需要在链接上加入相对路径时,需要防止docsify编译。例如:
[link](/demo/)
编译结果为 link ,并且会加载 /demo/README.md 。
[link](/demo/ ':ignore')
编译结果为 link,页面会跳转到 /demo/index.html 。
也可以为链接设置标题:
[link](/demo/ ':ignore title')
编译结果为 link
七、部署文档
7.1 Docker部署(官网修复版)
注:不知道什么原因官网所介绍的 docker 部署实例并不能通过,下面是多次测试验证后的修复版本。
- 创建Dockerfile
FROM node:latest
WORKDIR /docsify
RUN npm install -g docsify-cli@latest --registry https://registry.npm.taobao.org docsify-cli@latest
ENTRYPOINT docsify init ./docs && docsify serve ./docs
构建 docker 镜像:
docker build -f Dockerfile -t docsify:1.0 .
运行 docker 镜像:
docker run -idt -p 3000:3000 -v /home/docsify:/docsify docsify:1.0
# -p 冒号前面的 3000 可以改成宿主机需要暴露的端口号
# -v 冒号前面的 /home/docsify 可以改成宿主机文件存放地址
这时候去请求 domain:3000 就可以访问到页面了。
然后在宿主机下 /home/docsify/docs 即可看到 md 文件,修改文件后页面会即使生效,赞!
这里 /home/docsify 完全可以用 git 建个仓库管理下,当然用其他传文件方法也可以。
7.2 ZEIT Now部署
安装Now CLI:
npm i -g now
切换到 docsify 网站的文档目录:
cd docs
部署:
now
7.3 部署到GitHub Pages
提交代码到GitHub,将文档放在 docs/ 目录下,在设置页面开启 GitHub Pages 功能并选择 master branch /docs folder 选项。
7.4 部署到Gitee Pages
在对应的 Gitee 仓库服务中选择 Gitee Pages,选择要部署的分支,填写要部署的分支上的目录,例如docs,填写完成之后点击启动即可。
总结
如果有自己的服务器和域名,非常推荐使用 Docker 容器化部署方式,当然个人使用也可以直接使用 GitHub Pages 或 Gitee Pages,快速编写公开 API 之类的文档非常合适。喜欢本文可以关注我~有问题可以留言或私信我。
docsify操作和Docker部署流程文档相关推荐
- kubernetes基础之docker部署wizard文档管理系统平台(亲测有效)
docker部署wizard文档管理系统平台 公司之前用的是showdoc平台,用来进行技术文档的分享和保存,当时只是编写一些简单的markdown文档,但是后来随着文档越来越多,现在需要新的平台的来 ...
- 【云原生之Docker实战】使用Docker部署ShowDoc文档工具
[云原生之Docker实战]使用Docker部署ShowDoc文档工具 一.ShowDoc介绍 1.ShowDoc简介 2.ShowDoc功能 二.检查docker版本 三.检查docker状态 四. ...
- 【云原生之Docker实战】使用Docker部署Mindoc文档管理平台
[云原生之Docker实战]使用Docker部署Mindoc文档管理平台 一.Mindoc介绍 1.Mindoc简介 2.Mindoc功能 二.检查宿主机系统版本 1.检查操作系统版本 2.检查系统内 ...
- 基于Docker部署Wizard文档管理系统
项目地址 https://github.com/mylxsw/wizard 部署 需要先部署mysql(建议用mysql5版本),采用docker方式部署,端口在宿主机映射为8444 admin@te ...
- 有了docsify神器,从此爱上看文档
有了docsify神器,从此爱上看文档 简介 一个神奇的文档网站生成工具 我们在做完项目的时候经常会写一些项目手册,来记录我们在项目开发过程中的一些开发流程.使用方式以及注意事项,分享给将会使用到这个 ...
- Centos7 部署Kubenetes文档
Centos7 部署Kubenetes文档 部署说明:一个master + 一个node 操作系统信息 [root@zf zhangfeng]# uname -a Linux zf.master 3. ...
- docsify+github/gitee搭建个人在线文档
docsify,一款神奇的文档网站生成器.docsify 可以快速帮你生成文档网站.不同于 GitBook.Hexo 的地方是,它不会生成静态的 .html 文件,所有转换工作都是在运行时.如果你 ...
- GitHub Actions 部署 VuePress 文档
GitHub Actions 是 GitHub 的持续集成服务,于2018年10月推出.这些天,我一直在试用,觉得它非常强大,有创意,比 Travis CI 玩法更多. 本文是一个简单教程,演示如何使 ...
- java计算机毕业设计智能旅游电子票务系统演示录像2020源码+mysql数据库+系统+部署+lw文档
java计算机毕业设计智能旅游电子票务系统演示录像2020源码+mysql数据库+系统+部署+lw文档 java计算机毕业设计智能旅游电子票务系统演示录像2020源码+mysql数据库+系统+部署+l ...
- 【MOS】OCR/Vote disk 维护操作: (添加/删除/替换/移动) (文档 ID 1674859.1)
[MOS]OCR/Vote disk 维护操作: (添加/删除/替换/移动) (文档 ID 1674859.1) 文档内容 目标 解决方案 准备磁盘 1. 磁盘大小 2. 裸设备或者块设备 ...
最新文章
- python基础30个常用代码大全-Python基础小题汇总
- sql server 2005 express附加数据库出错解决方法——添加数据库用户
- 古登堡是垂直搜索引擎吗_网站排名,提高内容输出频率,就一定要对排名好吗?-SEO...
- Windows Embedded CE 6.0开发初体验(五)构建CE平台
- java 反射静态内部类_android-反射的使用(反射静态内部类、非静态内部类、匿名内部类等)...
- 有人滥用 GitHub Actions在 GitHub 服务器挖掘密币,且正在蔓延
- BP神经网络matlab程序运行问题
- vb html ie弹出窗口,VB6 统制IE弹出模式窗口
- ie中加入html代码,IE中HTML编辑器的修改与使用
- netty channel的线程安全性与@Sharable
- Android入门笔记09
- excel正在等待某个应用程序以完成对象链接与嵌入操作_ES32 嵌入式开发从这里开始...
- 网站被挂黑链是什么原因,如何解决挂黑链问题!
- 如何提高意志力如何坚持每天学习
- 网上找了c#仓库管理程序,编译的时候一直 报错
- c语言中符号常量的作用 定义,c语言常量定义规则知识点总结
- 从修正Adam到理解泛化:概览2017年深度学习优化算法的最新研究进展
- 做移动网站还是移动应用程序?
- 抛光树脂制备超纯水电阻率18.25M
- 机器学习中的数学——蓄水池抽样算法(Reservoir Sampling Algorithm)
热门文章
- 恩格玛密码机的工作原理
- excel制作复合饼状图_如何在Excel中制作饼图
- 使用搜狗输入法的U模式打出不会读的字
- 星际开图挂_别开|《星际争霸2》牛X强力高端职业玩家手把手教你识别开图挂_234游戏网...
- 如何使用python 给PDF生成目录
- 程序员带半箱辣条参加东京奥运,网友:猝不及防一波狗粮!
- 交互设计流程是怎样的?
- android 点击 加qq群,Android一键加QQ群
- 计算机组成原理74138译码器连接,74138(74138译码器工作原理)
- 阿里巴巴android开发规范,阿里巴巴开发手册|阿里巴巴Android开发手册 PDF电子版_最火软件站...