markdown-it

2025年09月09日 08:50:02
112
markdown md解析 md转html
markdown-it markdown-it/markdown-it

markdown-it是一款快速且易扩展的Markdown解析器,遵循CommonMark规范并添加语法扩展。它配置灵活、速度快且安全,还有丰富的社区插件。

项目大小 3.75 KB
涉及语言 JavaScript 97.11% HTML 1.73% CSS 1.16%
许可协议 LICENSE
仓库同步说明
  • • 同步需要仓库写入权限以创建目标仓库
  • • 使用平台账号授权登录后将同步到您平台下的个人仓库

markdown-it

CI
NPM version
Coverage Status
Gitter

Markdown parser done right. Fast and easy to extend.

Live demo

  • Follows the CommonMark spec + adds syntax extensions & sugar (URL autolinking, typographer).
  • Configurable syntax! You can add new rules and even replace existing ones.
  • High speed.
  • Safe by default.
  • Community-written plugins and other packages on npm.

Table of content

Install

node.js:

1
npm install markdown-it

browser (CDN):

Usage examples

See also:

Simple

1
2
3
4
5
6
7
8
9
10
// node.js
// can use `require('markdown-it')` for CJS
import markdownit from 'markdown-it'
const md = markdownit()
const result = md.render('# markdown-it rulezz!');
 
// browser with UMD build, added to "window" on script load
// Note, there is no dash in "markdownit".
const md = window.markdownit();
const result = md.render('# markdown-it rulezz!');

Single line rendering, without paragraph wrap:

1
2
3
import markdownit from 'markdown-it'
const md = markdownit()
const result = md.renderInline('__markdown-it__ rulezz!');

Init with presets and options

(*) presets define combinations of active rules and options. Can be
"commonmark", "zero" or "default" (if skipped). See
API docs for more details.

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
42
43
44
45
46
47
48
49
50
51
import markdownit from 'markdown-it'
 
// commonmark mode
const md = markdownit('commonmark')
 
// default mode
const md = markdownit()
 
// enable everything
const md = markdownit({
  html: true,
  linkify: true,
  typographer: true
})
 
// full options list (defaults)
const md = markdownit({
  // Enable HTML tags in source
  html:         false,
 
  // Use '/' to close single tags ().
  // This is only for full CommonMark compatibility.
  xhtmlOut:     false,
 
  // Convert '
' in paragraphs into
  breaks:       false,
 
  // CSS language prefix for fenced blocks. Can be
  // useful for external highlighters.
  langPrefix:   'language-',
 
  // Autoconvert URL-like text to links
  linkify:      false,
 
  // Enable some language-neutral replacement + quotes beautification
  typographer:  false,
 
  // Double + single quotes replacement pairs, when typographer enabled,
  // and smartquotes on. Could be either a String or an Array.
  //
  // For example, you can use '«»„“' for Russian, '„“‚‘' for German,
  // and ['«\xA0', '\xA0»', '‹\xA0', '\xA0›'] for French (including nbsp).
  quotes: '“”‘'',
 
  // Highlighter function. Should return escaped HTML,
  // or '' if the source string is not changed and should be escaped externally.
  // If result starts with
  highlight: function (/*str, lang*/) { return ''; }
});

Plugins load

1
2
3
4
5
6
import markdownit from 'markdown-it'
 
const md = markdownit
  .use(plugin1)
  .use(plugin2, opts, ...)
  .use(plugin3);

Syntax highlighting

Apply syntax highlighting to fenced code blocks with the highlight option:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import markdownit from 'markdown-it'
import hljs from 'highlight.js' // https://highlightjs.org
 
// Actual default values
const md = markdownit({
  highlight: function (str, lang) {
    if (lang && hljs.getLanguage(lang)) {
      try {
        return hljs.highlight(str, { language: lang }).value;
      } catch (__) {}
    }
 
    return ''; // use external default escaping
  }
});

Or with full wrapper override (if you need assign class to

or ):

1
2
3
4
5
6
7
8
9
10
11
import markdownit from 'markdown-it'
import hljs from 'highlight.js' // https://highlightjs.org
 
// Actual default values
const md = markdownit({
  highlight: function (str, lang) {
    if (lang && hljs.getLanguage(lang)) {
      try {
        return '' +
               hljs.highlight(str, { language: lang, ignoreIllegals: true }).value +
               '
'; } catch (__) {} } return '
'
+ md.utils.escapeHtml(str) + ''; } });

Linkify

linkify: true uses linkify-it. To
configure linkify-it, access the linkify instance through md.linkify:

1
md.linkify.set({ fuzzyEmail: false });  // disables converting email to link

API

API documentation

If you are going to write plugins, please take a look at
Development info.

Syntax extensions

Embedded (enabled by default):

Via plugins:

Manage rules

By default all rules are enabled, but can be restricted by options. On plugin
load all its rules are enabled automatically.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import markdownit from 'markdown-it'
 
// Activate/deactivate rules, with currying
const md = markdownit()
  .disable(['link', 'image'])
  .enable(['link'])
  .enable('image');
 
// Enable everything
const md = markdownit({
  html: true,
  linkify: true,
  typographer: true,
});

You can find all rules in sources:

Benchmark

Here is the result of readme parse at MB Pro Retina 2013 (2.4 GHz):

1
2
3
4
5
6
7
8
9
10
11
npm run benchmark-deps
benchmark/benchmark.mjs readme
 
Selected samples: (1 of 28)
 > README
 
Sample: README.md (7774 bytes)
 > commonmark-reference x 1,222 ops/sec ±0.96% (97 runs sampled)
 > current x 743 ops/sec ±0.84% (97 runs sampled)
 > current-commonmark x 1,568 ops/sec ±0.84% (98 runs sampled)
 > marked x 1,587 ops/sec ±4.31% (93 runs sampled)

Note. CommonMark version runs with simplified link normalizers
for more “honest” compare. Difference is ≈1.5×.

As you can see, markdown-it doesn’t pay with speed for its flexibility.
Slowdown of “full” version caused by additional features not available in
other implementations.

markdown-it for enterprise

Available as part of the Tidelift Subscription.

The maintainers of markdown-it and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. Learn more.

Authors

markdown-it is the result of the decision of the authors who contributed to
99% of the Remarkable code to move to a project with the same authorship but
new leadership (Vitaly and Alex). It’s not a fork.

References / Thanks

Big thanks to John MacFarlane for his work on the
CommonMark spec and reference implementations. His work saved us a lot of time
during this project’s development.

Related Links:

Ports


                

                

免责声明 © 2026 - 虚宝阁

本站部分源码来源于网络,版权归属原开发者,用户仅获得使用权。依据《计算机软件保护条例》第十六条,禁止:

  • 逆向工程破解技术保护措施
  • 未经许可的分发行为
  • 去除源码中的原始版权标识

※ 本站源码仅用于学习和研究,禁止用于商业用途。如有侵权, 请及时联系我们进行处理。

侵权举报请提供: 侵权页面URL | 权属证明模板

响应时效:收到完整材料后48小时内处理

相关推荐

fastapi: Python web api 框架

fastapi: Python web api 框架

一个基于 Python 3.6+ 版本的异步 WEB 应用框架,使用 Python 类型注解构建 web API 。主要特点有: 高性能:与 Node JS 和 Go 相当。 编码快:将开发功能的速度提高 2~3 倍。 Bug少:减少大约 40% 的由开发人员导致的错误。 直观:强大的编辑器支持,可智能感知和补全代码。 简单:易于学习和使用,减少文档阅读时间。 简短:尽量减少代码重复。 健壮:获得可用于生产的代码,具有自动交互文档。 基于标准:基于 OpenAPI 和 JSON Schema 。

90539 2025-09-16
node-qrcode

node-qrcode

qr code generator

7955 2025-10-17
Stable Diffusion AI绘画界的 扛把子

Stable Diffusion AI绘画界的 扛把子

提到AI画图,没人能绕开Stable Diffusion!由Stability AI开源,支持文本生成图像、图像修复、风格迁移,关键是完全免费商用(非商用更没问题),普通电脑装个WebUI就能玩到飞起。

41831 2025-09-13
mammoth.js: Word 文档转 HTML

mammoth.js: Word 文档转 HTML

一个用于将 Word 文档(.docx)内容转换为 HTML 的 JavaScript 库。它能够提取文档中的结构信息,如标题、列表、表格、脚注等,并映射为相应的 HTML 标签。同时,忽略大部分样式(如字体颜色、字号、边距等),使得生成的 HTML 代码更加简洁、干净。

5810 2025-10-02
ImageMagick: 图片处理瑞士军刀

ImageMagick: 图片处理瑞士军刀

ImageMagick是开源的命令行图片工具,压缩图片、转格式、加水印、切图都能一行命令搞定,还能批量处理如把100张图片批量压缩成WebP格式,自媒体、开发者都能用。

14651 2025-09-16

仓库下载

gitee

GitHub 下载代理

文件信息

文件名
文件大小
文件类型
代理耗时