将markdown文档使用gulp转换为HTML【附带两套css样式】

  今天遇到一个需求,即将Markdown文档转为为HTML在网页展示,身为一名程序员,能用代码解决的问题,手动打一遍无疑是可耻的。上代码

  首先是安装依赖

cnpm i gulp -g  //针对没有全局安装gulp的用户
cnpm i gulp gulp-markdown gulp-header --save-dev //安装本地依赖

  创建gulpfile.js

/*
* @Author: Carl Elias
* @Date: 2019-04-04 21:34:06
* @Last Modified by: Carl Elias
* @Last Modified time: 2019-04-04 21:37:52
*/ //将api文档编译为HTML
const gulp = require('gulp')
const markdown = require('gulp-markdown')
const header = require('gulp-header') gulp.task('default', () =>
gulp
.src('./api.md')
.pipe(header('<!doctype html><head><title>API文档</title><link rel="stylesheet" href="css/md.css"></head>\n\r')).pipe(
      markdown({
headerIds: false,
}),
)
.pipe(gulp.dest('./')),
)

  运行gulp,将api文档转换为HTML页面

gulp

  两个css样式

* {
font-size: 16px;
font-family: 幼圆;
} body {
background-color: #FDF6E3; line-height: 1.5em;
max-width: 960px;
margin: 0 auto;
} /* !important的作用是提高指定样式规则的应用优先权。*/
body>*:first-child {
margin-top: 0 !important;
} body>*:last-child {
margin-bottom: 0 !important;
} /* <tt> 标签与 <code> 和 <kbd> 标签一样,<tt> 标签和必
需的 </tt> 结束标签告诉浏览器,要把其中包含的文本显示
为等宽字体。*/ /* 标题 h1~h2*/
/* ====================================================*/
h1 {
font-size: 2.8em;
color: #d33682;
margin: 0.75em;
} h2 {
font-size: 2.4em;
color: #9B31EA;
margin: 0.75em; } h3 {
font-size: 1.8em;
color: #338000;
margin: 0.75em;
} h4 {
font-size: 1.4em;
margin: 0.75em;
} /* p,a,,hr,list,table*/ /* ==================================================*/
/*<blockquote> 标签定义摘自另一个源的块引用。浏览器
通常会对 <blockquote> 元素进行缩进。
*/
blockquote {
font-style: italic;
border-left: 5px solid;
margin-left: 2em;
padding-left: 1em;
} /* p*/
p {
margin-bottom: 1.5em;
} /* hr */
hr {
clear: both;
margin: 15px 0;
height: 0px;
overflow: hidden;
border: none;
background: transparent;
border-bottom: 4px solid #ddd;
padding:;
} /* link*/ a {
color: #b58900;
text-decoration: none;
} a:focus {
outline: thin dotted;
} a:active,
a:hover {
outline:;
} a:hover {
color: #cb4b16;
text-decoration: underline;
} a:visited {
color: #cb4b16;
} /* list */ ul,
ol {
margin: 0 0 1.5em 1.5em;
} ol li {
list-style-type: decimal;
list-style-position: outside;
} ul li {
list-style-type: disc;
list-style-position: outside;
} /* tables */ table thead,
table tr {
border-top-width: 1px;
border-top-style: solid;
border-top-color: rgb(235, 242, 224);
} table {
border-bottom-width: 1px;
border-bottom-style: solid;
border-bottom-color: rgb(235, 242, 224);
} thead,
table td:nth-child(1) {
font-weight: bold;
color: #7034ca;
} /* Padding and font style */
table td,
table th {
padding: 5px 10px;
font-size: 12px;
font-family: Verdana;
color: rgb(149, 170, 109);
} /* Alternating background colors */
table tr:nth-child(even) {
background: rgb(230, 238, 214)
} table tr:nth-child(odd) {
background: #FFF
} /* code */
/* =======================================*/
pre {
margin-left: auto;
margin-right: auto;
padding: 20px;
line-height: 1.2;
color: #FFF;
background: #111;
border-radius: 20px;
} pre,
code,
tt {
font-size: 12px;
font-family: Consolas, "Liberation Mono", Courier, monospace;
} code,
tt {
margin: 0 0px;
padding: 0px 0px;
white-space: pre-wrap;
border: 1px solid #eaeaea;
background-color: #f8f8f8;
border-radius: 3px;
} pre>code {
margin:;
padding:;
white-space: pre-wrap;
font-size: 16px;
border: none;
background: transparent;
color: #a6e22e;
font-family: Consolas, "Courier New", Courier, FreeMono, monospace;
background: #111;
border-radius: 2px;
}
pre code,
pre tt {
background-color: transparent;
border: none;
word-break: break-all;
} /*目录形成的范围*/
#outline-list {
height: 325px;
position: fixed;
overflow-y: scroll;
overflow-x: hidden;
bottom: 80px;
right: 15px;
width: 220px;
} /* 设置滚动条的样式 */
::-webkit-scrollbar {
width: 12px;
} /* 滚动槽 */
::-webkit-scrollbar-track {
-webkit-box-shadow: inset006pxrgba(0, 0, 0, 0.3);
border-radius: 10px;
} /* 滚动条滑块 */
::-webkit-scrollbar-thumb {
border-radius: 10px;
background: rgba(0, 0, 0, 0.1);
-webkit-box-shadow: inset006pxrgba(0, 0, 0, 0.5);
} ::-webkit-scrollbar-thumb:window-inactive {
background: rgba(255, 0, 0, 0.4);
}

/* RESET
=============================================================================*/ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {
margin:;
padding:;
border:;
} /* 设置滚动条的样式 */
::-webkit-scrollbar {
width:12px;
}
/* 滚动槽 */
::-webkit-scrollbar-track {
-webkit-box-shadow:inset006pxrgba(0,0,0,0.3);
border-radius:10px;
}
/* 滚动条滑块 */
::-webkit-scrollbar-thumb {
border-radius:10px;
background:rgba(0,0,0,0.1);
-webkit-box-shadow:inset006pxrgba(0,0,0,0.5);
}
::-webkit-scrollbar-thumb:window-inactive {
background:rgba(255,0,0,0.4);
} /* BODY
=============================================================================*/ body {
font-family: Helvetica, arial, freesans, clean, sans-serif;
font-size: 14px;
line-height: 1.6;
color: #333;
background-color: #FDF6E3;
padding: 20px;
max-width: 960px;
margin: 0 auto;
} body>*:first-child {
margin-top: 0 !important;
} body>*:last-child {
margin-bottom: 0 !important;
} /* BLOCKS
=============================================================================*/ p, blockquote, ul, ol, dl, table, pre {
margin: 15px 0;
} /* HEADERS
=============================================================================*/ h1, h2, h3, h4, h5, h6 {
margin: 20px 0 10px;
padding:;
font-weight: bold;
-webkit-font-smoothing: antialiased;
} h1 tt, h1 code, h2 tt, h2 code, h3 tt, h3 code, h4 tt, h4 code, h5 tt, h5 code, h6 tt, h6 code {
font-size: inherit;
}
h4,
h5,
h6 {
color: #859900;
}
h1 {
font-size: 2.8em;
color: #d33682;
}
h2 {
font-size: 2.4em;
color: #9B31EA; }
h3 {
font-size: 1.8em;
color: #338000;
}
h4 {
font-size: 1.4em;
}
h5 {
font-size: 1.3em;
}
h6 {
font-size: 1.15em;
} body>h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-child, body>h4:first-child, body>h5:first-child, body>h6:first-child {
margin-top:;
padding-top:;
} a:first-child h1, a:first-child h2, a:first-child h3, a:first-child h4, a:first-child h5, a:first-child h6 {
margin-top:;
padding-top:;
} h1+p, h2+p, h3+p, h4+p, h5+p, h6+p {
margin-top: 10px;
} /* LINKS
=============================================================================*/ a {
color: #b58900;
text-decoration: none;
}
a:focus {
outline: thin dotted;
}
a:active,
a:hover {
outline:;
}
a:hover {
color: #cb4b16;
text-decoration: underline;
}
a:visited {
color: #cb4b16;
} /* LISTS
=============================================================================*/ ul, ol {
padding-left: 30px;
} ul li > :first-child,
ol li > :first-child,
ul li ul:first-of-type,
ol li ol:first-of-type,
ul li ol:first-of-type,
ol li ul:first-of-type {
margin-top: 0px;
} ul ul, ul ol, ol ol, ol ul {
margin-bottom:;
} dl {
padding:;
} dl dt {
font-size: 14px;
font-weight: bold;
font-style: italic;
padding:;
margin: 15px 0 5px;
} dl dt:first-child {
padding:;
} dl dt>:first-child {
margin-top: 0px;
} dl dt>:last-child {
margin-bottom: 0px;
} dl dd {
margin: 0 0 15px;
padding: 0 15px;
} dl dd>:first-child {
margin-top: 0px;
} dl dd>:last-child {
margin-bottom: 0px;
} /* CODE
=============================================================================*/ pre, code, tt {
font-size: 12px;
font-family: Consolas, "Liberation Mono", Courier, monospace;
} code, tt {
margin: 0 0px;
padding: 0px 0px;
white-space: nowrap;
border: 1px solid #eaeaea;
background-color: #f8f8f8;
border-radius: 3px;
} pre>code {
margin:;
padding:;
white-space: pre;
color: #338000;
border: none;
background: transparent; } pre {
background-color: #f8f8f8;
border: 1px solid #ccc;
font-size: 13px;
line-height: 19px;
overflow: auto;
padding: 6px 10px;
border-radius: 3px;
} pre code, pre tt {
background-color: transparent;
border: none;
}
/* QUOTES
=============================================================================*/ blockquote {
border-left: 4px solid #DDD;
padding: 0 15px;
color: #777;
} blockquote>:first-child {
margin-top: 0px;
} blockquote>:last-child {
margin-bottom: 0px;
} /* HORIZONTAL RULES
=============================================================================*/ hr {
clear: both;
margin: 15px 0;
height: 0px;
overflow: hidden;
border: none;
background: transparent;
border-bottom: 4px solid #ddd;
padding:;
} /* TABLES
=============================================================================*/
table{
margin: 0 auto;
}
table th {
font-weight: bold;
} table th, table td {
border: 1px solid #ccc;
padding: 6px 13px;
} table tr {
border-top: 1px solid #ccc;
background-color: #fff;
} table tr:nth-child(2n) {
background-color: #f8f8f8;
} /* IMAGES
=============================================================================*/ img {
max-width: 100%
}
/* P
=============================================================================*/
p{
font-size:1.2em;
} /*目录形成的范围*/
#outline-list {
height: 325px;
position: fixed;
overflow-y:scroll;
overflow-x:hidden;
bottom: 80px;
right: 15px;
width: 220px;
}

  特别鸣谢:

  杨立果:markdown的css样式

  浮客:如何快速实现 markdown 转 HTML 文档?

将markdown文档使用gulp转换为HTML【附带两套css样式】的更多相关文章

  1. NET 5.0 Swagger API 自动生成MarkDown文档

    目录 1.SwaggerDoc引用 主要接口 接口实现 2.Startup配置 注册SwaggerDoc服务 注册Swagger服务 引用Swagger中间件 3.生成MarkDown 4.生成示例 ...

  2. 使用Python从Markdown文档中自动生成标题导航

    概述 知识与思路 代码实现 概述 Markdown 很适合于技术写作,因为技术写作并不需要花哨的排版和内容, 只要内容生动而严谨,文笔朴实而优美. 为了编写对读者更友好的文章,有必要生成文章的标题导航 ...

  3. Linux(Ubuntu)使用日记------markdown文档转化为word文档

    Linux(Ubuntu)使用日记------markdown文档转化为word文档

  4. Markdown 文档生成工具

    之前用了很多Markdown 文档生成工具,发现有几个挺好用的,现在整理出来,方便大家快速学习. loppo: 非常简单的静态站点生成器 idoc:简单的文档生成工具 gitbook:大名鼎鼎的文档协 ...

  5. ASP.NET 动态查找数据 并且生成xml文档 同时使用xslt转换为xhtml

    前言 xsl是一门标签解析语言,很适合做动态网页的前台标签 www.bamn.cn 1 首先是aspx页面 添加一个输入框 按钮 还有一个用来显示解析后的xhtml代码的控件 <form id= ...

  6. 如何在Markdown文档中插入空格?

    简单说 在 Markdown 文档中,可以直接采用 HTML 标记插入空格(blank space),而且无需任何其他前缀或分隔符.具体如下所示: 插入一个空格 (non-breaking space ...

  7. vscode使用Markdown文档编写

    首先安装vscode工具,具体的使用可以参考之前的博文:<Visual Studio Code教程:基础使用和自定义设置> VScode已经默认集成markdown文档编辑插件.可以新建一 ...

  8. 使用shell脚本生成数据库markdown文档

    学习shell脚本编程的一次实践,通过shell脚本生成数据库的markdown文档,代码如下: HOST=xxxxxx PORT=xxxx USER="xxxxx" PASSWO ...

  9. 01将图片嵌入到Markdown文档中

    将图片内嵌入Markdown文档中 将图片嵌入Markdown文档中一直是一个比较麻烦的事情.通常的做法是将图片存入本地某个路径或者网络存储空间,使用URL链接的形式插入图片: ![image][ur ...

随机推荐

  1. mvc模式的理解

    一开始总是觉得dao层和service层没有区别,甚至觉得service层根本就是多余的,service层就是把dao层的内容调用了一下,然后重写了一次,后来才理解到,dao层是数据链路层,是与数据库 ...

  2. Ubuntu上hi3531交叉编译环境arm-hisiv100nptl-linux搭建过程

    安装SDK 1.Hi3531 SDK包位置 在"Hi3531_V100R001***/01.software/board"目录下,您可以看到一个 Hi3531_SDK_Vx.x.x ...

  3. MFC全屏显示和多窗口动态显示的一些技巧和方法

    一.全屏 1.全屏窗口从dialogex继承,因为要处理一些东西 2.全屏代码,这样设置后尺寸不会出bug,只设置为最大值的话容易出bug //get current system resolutio ...

  4. ListView添加图片文字项

    1)listview 控件 结合 imagelist 控件 实现类似效果. 2)添加 imagelist 控件 images 属性,点击后面的... 添加相应图片. 3)点listview,查看其属性 ...

  5. luogu4643 [国家集训队]阿狸和桃子的游戏

    题目链接:洛谷 这道题乍一看非常的难,而且题目标题上的标签让人很害怕. 但其实这道题并不难写(只要想到了...emm) 因为我们只需要知道两个人得分之差,所以我们可以对条件进行变换. 我们将边权平分到 ...

  6. 数电基础之《OC门》

    OC门,又称集电极开路门,Open Collector.   为什么引入OC门?实际使用中,有时需要两个或两个以上与非门的输出端连接在同一条导线上,将这些与非门上的数据(状态电平)用同一条导线输送出去 ...

  7. 8、jeecg 笔记之 自定义word 模板导出(一)

    1.前言 jeecg 中已经自带 word 的导出导出功能,其所使用的也是 easypoi,尽管所导出的 word 能满足大部分需求, 但总是有需要用到自定义 word导出模板,下文所用到的皆是 ea ...

  8. opencart3修改产品页模板没有效果的原因排查

    这几天在opencart 3模板时发生了一个很奇怪的事情,ytkah明明已经将product.twig模板修改了,但是前端产品页就是没有变化,后台刷新缓存了也不起左右.后面想着把模板重命名成produ ...

  9. adobe air for ios 例子

    越南soha 平台ios ane http://yun.baidu.com/s/1o65G9XS 里面有oc源码,as库,以及打包生成ane,测试ane 全过程

  10. linux中巧用ctrl-z后台运行程序

    我们知道后台运行任务时,可以用 () 和 &,但是有的时候我们会忘记加&,对于执行需要很长时间的任务来说,Ctrl+Z可能是一个比较好的把任务转入后台的方法. 当我们按下Ctrl+Z时 ...