markdown-it

2025年09月09日 08:50:02
150
markdown md解析 md转html

项目结构

📌 markdown-it markdown-it/markdown-it

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

项目大小 9.15 MB
涉及语言 JavaScript 97.11% HTML 1.73% CSS 1.16%
许可协议 MIT License

markdown-it

CINPM versionCoverage StatusGitter

Markdown 解析器做对了。快速且易于扩展。

Live demo

  • 遵循 CommonMark spec+ adds syntax extensions & sugar (URL autolinking, typographer).

  • 可配置的语法!您可以添加新规则,甚至替换现有规则。

  • 高速。

  • Safe默认情况下。

  • 社区编写 plugins and other packages在 npm 上。

目录

Install

node.js:

1
npm install markdown-it

浏览器(CDN):

Usage examples

另见:

Simple

1
2
3
4
5
6
7
8
// node.js
// can use \\`require('markdown-it')\\` f或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!');

单行渲染,无段落换行:

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

Init with presets and options

(*) 预设定义活动规则和选项的组合。可以“commonmark”, “zero”“default”(如果跳过)。看API docs了解更多详情。

1
import markdownit from ‘markdown-it'

Plugins load

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

Syntax highlighting

使用highlight选择:

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 }).value;
      } catch (__) {}
    }return ‘'; // use external default escaping
  }
});

或者使用完整的包装器覆盖(如果您需要将类分配给

or ):

1
2
3
4
5
6
7
8
9
10
11
12
13
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使用linkify-it.要配置 linkify-it,请通过以下方式访问 linkify 实例md.linkify:

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

API

API documentation

如果你要写插件,请看看Development info.

Syntax extensions

嵌入式(默认启用):

通过插件:

Manage rules

默认情况下,所有规则都处于启用状态,但可以通过选项进行限制。在插件加载时,它的所有规则都会自动启用。

1
2
3
4
5
6
7
8
9
10
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,
});

您可以在源中找到所有规则:

  • parser_core.mjs

  • parser_block.mjs

  • parser_inline.mjs

Benchmark

以下是 MB Pro Retina 2013 (2.4 GHz) 的自述文件解析结果:

1
2
3
4
5
6
7
npm run benchmark-deps
benchmark/benchmark.mjs readmeSelected samples: (1 of 28)
 > READMESample: 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)

注意。 CommonMark 版本与simplified link normalizers为了更“诚实”的比较。差额为≈1.5×。

如您所见,markdown-it不会为其灵活性而快速付费。由于其他实现中不可用的附加功能导致“完整”版本的速度变慢。

markdown-it for enterprise

作为 Tidelift 订阅的一部分提供。

的维护者markdown-it以及数以千计的其他软件包正在与 Tidelift 合作,为您用于构建应用程序的开源依赖项提供商业支持和维护。节省时间、降低风险并改*代码运行状况,同时向您使用的确切依赖项的维护人员付费。Learn more.

Authors

markdown-it是贡献了 99% 的作者决定的结果出色代码以移动到具有相同作者身份但新领导层(Vitaly 和 Alex)的项目。这不是分叉。

References / Thanks

非常感谢John MacFarlane表彰他在 CommonMark 规范和参考实现方面的工作。在项目开发过程中,他的工作为我们节省了大量时间。

相关链接:

港口

免责声明 © 2025 - 虚宝阁

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

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

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

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

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

相关推荐

drawnix

开源白板工具(SaaS),一体化白板,包含思维导图、流程图、自由画等。All in one open-source whiteboard tool with mind, flowchart, freehand and etc.

11913 2025-08-28

OpenIsle- 轻量级的Java开源社区系统

这是一个基于 Spring Boot 和 Vue3 构建的开源自由社区系统,定位为轻量级的 Discourse。它完全开源、可二次开发,支持白名单邀请、自定义标签、实时通知等功能。

393 2025-09-13

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

Trilium 开源个人知识库

这是一个专门为管理大量结构化笔记而设计的应用程序。 它的核心目标就是帮助你有效地收集、组织、链接和查找你积累的知识和信息。

31988 2025-09-15

Seelen-UI: 高度可定制的 Windows 桌面美化工具

一款免费开源的 Windows 桌面增强工具,专注于高度自定义和效率提升。它采用 Rust 语言开发,结合 Tauri 框架与 Web 技术,支持窗口平铺管理、应用启动器、Dock、任务栏、动态壁纸、插件扩展等功能。

13691 2025-10-04

pansou: 全网网盘搜索神器

PanSou是一款高性能的网盘资源搜索API服务,支持TG频道和插件搜索。系统设计以性能和可扩展性为核心,支持多频道多插件并发搜索、结果智能排序和网盘类型分类。docker集成前后端,一键启动,开箱即用。 https://so.252035.xyz/

7411 2025-09-28

ohmyzsh: 终端美化神器

Oh My Zsh是开源的Zsh配置管理器,装完终端瞬间变好看,还有自动补全、命令高亮、快捷别名,比如输“git st”就能代替“git status”,程序员敲命令快到飞起。 主要功能: 终端美化(支持几百个主题,比如经典的agnoster);命令自动补全(输一半按Tab自动补全);命令高亮(正确命令绿色,错误命令红色);快捷别名(自定义命令缩写,比如“ll”代替“ls -l”);插件扩展(比如git插件加很多git快捷命令)。

181910 2025-09-16

Claudable:基于 Next.js 框架的网站生成器

把你用自然语言描述的应用想法,直接变成可以运行的网站代码。Claudable 背后依赖强大的 AI 编程助手,主要是 Claude Code,也支持 Cursor CLI 来理解你的需求并生成代码。你不需要懂复杂的 API 设置、数据库配置或者部署流程:用简单的语言告诉 Claudable 你想要什么应用。

2525 2025-09-15

ImageMagick: 图片处理瑞士军刀

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

14651 2025-09-16