这是一个丑陋的 markdown 文档处理器
npm install md0
var md0 = require('md0')
var markdown = '# title1\n## title2'
var option = {
codeIndex: true,
codeHeight: 0,
titleAnchor: true,
catalog: false
}
var html = md0(markdown, option)
console.log(html)
详细用法见项目根目录文件 ./parser.js
<script src="/path/to/md0.js"></script>
<link rel="stylesheet" href="/path/to/md0.css"/>
<script>
var markdown = '# title1\n## title2'
var option = {
codeIndex: true,
codeHeight: 0,
titleAnchor: true,
catalog: false
}
var html = md0(markdown, option)
console.log(html)
</script>
也可以使用 cdn:
<script src="https://cdn.jsdelivr.net/npm/md0/dist/md0.js"></script>
安装到全局
# npm
npm install md0 -g
# yarn
yarn global add md0
安装后,就能够使用全局的命令 md0
md0 <input> [--options]
注意:当 input 是目录时,会处理其下的所有匹配文件
处理单个文件
md0 /path/to/awesome.md
此时输出文件为 output/awesome.html
处理目录下所有文件
md0 /path/to --output dist
此时会处理目录 /path/to 下的所有文件,并将输出写入目录 dist 。
输出目录是相对于执行 md0
命令的目录。
名字 | 类型 | 默认值 | 描述 |
---|---|---|---|
codeHeader | Boolean | true | 是否在代码块上面显示语言 |
codeIndex | Boolean | true | 是否在代码块前面显示行号 |
codeHeight | Number | 0 | 代码块的最大高度,单位为px ,为0表示不限制 |
titleAnchor | Boolean | true | 是否在标题前显示导航锚点 |
clean | Boolean | false | 是否渲染为清洁模式,清洁模式时会保留浏览器的默认样式 |
catalog | Boolean | false | 是否生成目录 |
useHljs | Boolean | false | 是否使用highlight.js 高亮代码 |
render | function(type, html, data) | - | 自定义内容渲染器 |
emojis | Object | - | 指定 emoji 的标识与图片映射关系的对象,目前 CLI 是从 https://api.github.com/emojis 获取 since 1.2.0
|
emojiSize | String | 18px | 指定 emoji 的大小 since 1.2.0
|
注意:指定了 catalog
参数 或 markdown 文件中包含 [toc]
标记时,均会生成目录。
不同之处在于,如果指定了 [toc]
那么目录会放置在 [toc]
处,否则会放置在文档最前方。
另外,仅会处理第一个 [toc]
标记。 Since 1.2.0
emoji
列表来自 https://api.github.com/emojis,其图片为在线url
highlight.js
高亮代码在使用时,需要自行在页面内引入 highlight.js
库以及其样式文件:
<script src="/path/to/highlight.min.js"></script>
<link href="/path/to/styles/default.min.css" rel="stylesheet">
此时,md0.css
需要在 highlight.js
的样式后引入,以使其适应主题
代码高亮配置参考: https://github.com/highlightjs/highlight.js
符号 \
对块级元素有转义作用,即出现此符号后,后续相关符号都按原样输出
如果 _
, *
符号被
(空白字符) 包围,那么按原样渲染
行内代码可以 var a = '`'
的写法来包含 `
符号
代码块可以直接通过使用 4 个 space 或 1 个 tab (相对前面一项) 声明。 当遇到小于此缩进时(不论是出现空行),代码块结束
代码块除了使用 ` 符号,还可以使用 ~ 符号
还可以通过这样的方式生成标题
h1
title1
===
h2
title2
---
文字下的划线数量不限(大于1即有效),这种情况下,划线上方的文字可以有多行(不能包含空行)
tit
le
1 and
title2
---
划线前最多可以有3个空格 (这种写法的优先级甚至高于 html):
<a title="a lot
---
of dashes"/>
会被解析为标题,而不是 html
在写作 ## xxxx ###
时,前导 #
符号如果多于6个,则按原样输出多余的符号
(按 commonmark 标准,多于6个时,就不认为是标题了);
后续的 #
符号删除 (有转义时不删除)
其中可以包含以下类型: headers, lists, and code blocks
对有序列表,可以考虑在后期添加选项以支持保留荐的原编号。
如果列表项被空行包围,那么此项的内容将被 <p>
元素包围。
列表项下的代码块(如果使用缩进),那么需要正常的两倍。
在原始的html代码块中,如果html在同一行,那其内的文本内容,需要被当作 markdown 解析。
块级 html ,始终不渲染 markdown 语法。
@
和 #
功能支持@
表示提醒一个用户,需要通过选项提供接口来渲染
#
表示引用一个地址,需要通过选项提供接口来渲染
watch
选项以支持实时渲染quoteblock
渲染错误的问题useHljs
选项,此时生成的文件无法高亮的问题[toc]
标记支持&
符号被识别为转义符的问题render
支持,可以自定义对一些内容的渲染此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型