markdown-it
Markdown 解析器做对了。快速且易于扩展。
-
遵循 CommonMark spec+ adds syntax extensions & sugar (URL autolinking, typographer).
-
可配置的语法!您可以添加新规则,甚至替换现有规则。
-
高速。
-
Safe默认情况下。
-
社区编写 plugins and other packages在 npm 上。
目录
Install
node.js:
1 npm install markdown-it
浏览器(CDN):
-
jsDeliver CDN
Usage examples
另见:
-
API documentation- 获取更多信息和示例。
-
Development info- 对于插件编写者。
Simple
12345678 // node.js// can use \\`require('markdown-it')\\` f或CJSimport 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!');
单行渲染,无段落换行:
123 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
12345 import markdownit from ‘markdown-it'const md = markdownit .use(plugin1) .use(plugin2, opts, …) .use(plugin3);
Syntax highlighting
使用highlight选择:
1234567891011 import markdownit from ‘markdown-it'import hljs from ‘highlight.js' // https://highlightjs.org// Actual default valuesconst 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 ):
12345678910111213 import markdownit from ‘markdown-it'import hljs from ‘highlight.js' // https://highlightjs.org// Actual default valuesconst 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
如果你要写插件,请看看Development info.
Syntax extensions
嵌入式(默认启用):
-
Tables(GFM)
-
Strikethrough (GFM)
通过插件:
-
…和others
Manage rules
默认情况下,所有规则都处于启用状态,但可以通过选项进行限制。在插件加载时,它的所有规则都会自动启用。
12345678910 import markdownit from ‘markdown-it'// Activate/deactivate rules, with curryingconst md = markdownit() .disable([‘link', ‘image']) .enable([‘link']) .enable(‘image');// Enable everythingconst 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) 的自述文件解析结果:
1234567 npm run benchmark-depsbenchmark/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
-
亚历克斯·科查林github/rlidwka
-
维塔利·普兹林github/puzrin
markdown-it是贡献了 99% 的作者决定的结果出色代码以移动到具有相同作者身份但新领导层(Vitaly 和 Alex)的项目。这不是分叉。
References / Thanks
非常感谢John MacFarlane表彰他在 CommonMark 规范和参考实现方面的工作。在项目开发过程中,他的工作为我们节省了大量时间。
相关链接:
-
https://github.com/jgm/CommonMark - reference CommonMark implementations in C & JS, also contains latest spec & online demo.
-
http://talk.commonmark.org- CommonMark 论坛,协作开发人员工作的好地方。
港口
-
motion-markdown-it- 红宝石/RubyMotion
免责声明 © 2025 - 虚宝阁
本站部分源码来源于网络,版权归属原开发者,用户仅获得使用权。依据《计算机软件保护条例》第十六条,禁止:
- 逆向工程破解技术保护措施
- 未经许可的分发行为
- 去除源码中的原始版权标识
※ 本站源码仅用于学习和研究,禁止用于商业用途。如有侵权, 请及时联系我们进行处理。