Markdown パーサーは正しく行われました。素早く簡単に拡張できます。
ライブデモ
CommonMark 仕様に従い、構文拡張機能と糖分 (URL 自動リンク、タイポグラファー) を追加します。
構文を設定可能!新しいルールを追加したり、既存のルールを置き換えたりすることもできます。
高速。
デフォルトでは安全です。
コミュニティが作成したプラグインと npm 上のその他のパッケージ。
目次
インストール
使用例
単純
プリセットとオプションを使用して初期化する
プラグインのロード
構文の強調表示
リンク化
API
構文拡張
ルールの管理
ベンチマーク
エンタープライズ向けのマークダウン IT
著者
参考文献/感謝
ノード.js :
npm インストール markdown-it
ブラウザ (CDN):
jsDeliver CDN
cdnjs.com CDN
以下も参照してください。
API ドキュメント- 詳細と例については。
開発情報 - プラグイン作成者向け。
//node.js// CJSimport に `require('markdown-it')` を使用できます markdownit from 'markdown-it'const md = markdownit()const result = md.render('# markdown-it ruleszz!') ;// UMD ビルドを備えたブラウザ、スクリプトのロード時に「ウィンドウ」に追加// 「markdownit」にはダッシュがないことに注意してください。const md = window.markdownit();const result = md.render('# markdown-it ruleszz!');
段落折り返しなしの単一行レンダリング:
import markdownit from 'markdown-it'const md = markdownit()const result = md.renderInline('__markdown-it__ ruleszz!');
(*) プリセットは、アクティブなルールとオプションの組み合わせを定義します。 "commonmark"
、 "zero"
または"default"
(スキップされた場合) を指定できます。詳細については、API ドキュメントを参照してください。
import markdownit from 'markdown-it'// commonmark modeconst md = markdownit('commonmark')// デフォルトの modeconst md = markdownit()// すべてを有効にするconst md = markdownit({ html: 本当、 リンク化: true、 typographer: true})// 完全なオプション リスト (デフォルト)const md = markdownit({ // ソース内の HTML タグを有効にする html: 偽、 // 単一のタグ (<br />) を閉じるには「/」を使用します。 // これは CommonMark との完全な互換性のみを目的としています。 xhtmlOut: false、 // 段落内の「n」を <br> に変換します ブレーク: false、 // フェンスで囲まれたブロックの CSS 言語プレフィックス。できる // 外部ハイライタに便利です。 langPrefix: '言語-', // URL のようなテキストをリンクに自動変換します リンク化: false、 // 言語に依存しない置換と引用符の美化を有効にする // 置換の完全なリストについては、https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/replacements.mjs を参照してください。 タイポグラファー: false、 // 二重引用符 + 一重引用符の置換ペア (タイポグラファーが有効な場合) // スマートクオートをオンにします。文字列または配列のいずれかになります。 // // たとえば、ロシア語には '«»``"'、ドイツ語には '``"‚' を使用できます。 // フランス語の場合は ['«xA0', 'xA0»', '‹xA0', 'xA0›'] (nbsp を含む)。 引用符: '"""、 // ハイライター関数。エスケープされた HTML を返す必要があります。 // ソース文字列が変更されず、外部でエスケープする必要がある場合は ''。 // 結果が <pre... で始まる場合、内部ラッパーはスキップされます。 ハイライト: function (/*str, lang*/) { return ''; }});
'markdown-it'const md = markdownit から markdownit をインポートします .use(プラグイン1) .use(plugin2, opts, ...) .use(プラグイン3);
highlight
オプションを使用して、フェンスで囲まれたコード ブロックに構文のハイライトを適用します。
import markdownit from 'markdown-it'import hljs from 'highlight.js' // https://highlightjs.org// 実際のデフォルト値const md = markdownit({ ハイライト: function (str, lang) {if (lang && hljs.getLanguage(lang)) { try {return hljs.highlight(str, { language: lang }).value; } キャッチ (__) {}}リターン ''; // 外部のデフォルトエスケープを使用する }});
または、完全なラッパーオーバーライドを使用します(クラスを<pre>
または<code>
に割り当てる必要がある場合):
import markdownit from 'markdown-it'import hljs from 'highlight.js' // https://highlightjs.org// 実際のデフォルト値const md = markdownit({ ハイライト: function (str, lang) {if (lang && hljs.getLanguage(lang)) { try {return '<pre><code class="hljs">' + hljs.highlight(str, { language: lang,ignoreIllegals : true }).value + '</code></pre>'; } catch (__) {}}return '<pre><code class="hljs">' + md.utils.escapeHtml(str) + '</code></pre>'; }});
linkify: true
linkify-it を使用します。 linkify-it を構成するには、 md.linkify
を通じて linkify インスタンスにアクセスします。
md.linkify.set({ fuzzyEmail: false }); // メールからリンクへの変換を無効にします
APIドキュメント
プラグインを作成する場合は、開発情報をご覧ください。
埋め込み (デフォルトで有効):
テーブル (GFM)
取り消し線 (GFM)
プラグイン経由:
添字
上付き文字
脚注
定義リスト
略語
絵文字
カスタムコンテナ
入れる
マーク
...その他
デフォルトではすべてのルールが有効になっていますが、オプションで制限できます。プラグインのロード時に、そのすべてのルールが自動的に有効になります。
import markdownit from 'markdown-it'//curryingconst md = markdownit() を使用してルールをアクティブ化/非アクティブ化します。 .disable(['リンク', '画像']) .enable(['リンク']) .enable('image');// すべてを有効にするconst md = markdownit({ html: 本当、 リンク化: true、 タイポグラファー: true,});
すべてのルールはソース内にあります。
parser_core.mjs
parser_block.mjs
parser_inline.mjs
MB Pro Retina 2013 (2.4 GHz) での Readme 解析の結果は次のとおりです。
npm run ベンチマーク-deps ベンチマーク/benchmark.mjs の Readme 選択されたサンプル: (1/28) > README サンプル: README.md (7774 バイト) > commonmark-reference x 1,222 ops/秒 ±0.96% (97 実行サンプル) > 現在 x 743 ops/秒 ±0.84% (97 実行サンプル) > current-commonmark x 1,568 ops/秒±0.84% (サンプリングされた 98 回の実行) > マーク x 1,587 ops/秒±4.31% (93 回の実行をサンプリング)
注記。 CommonMark バージョンは、より「正直な」比較を行うために、簡素化されたリンク ノーマライザーを使用して実行されます。その差は約1.5倍です。
ご覧のとおり、 markdown-it
その柔軟性の割に速度に見合ったものではありません。他の実装では利用できない追加機能が原因で「フル」バージョンの速度が低下します。
Tidelift サブスクリプションの一部として利用できます。
markdown-it
や他の何千ものパッケージの管理者は、Tidelift と協力して、アプリケーションの構築に使用するオープンソースの依存関係に対する商用サポートとメンテナンスを提供しています。使用する正確な依存関係の保守者に料金を支払いながら、時間を節約し、リスクを軽減し、コードの健全性を向上させます。もっと詳しく知る。
アレックス・コチャリン github/rlidwka
ヴィタリー・プズリン github/puzrin
マークダウン - これは、 Remarkableコードの 99% に貢献した作成者が、同じ作成者で新しいリーダー (Vitaly と Alex) が就任するプロジェクトに移行するという決定の結果です。フォークじゃないよ。
CommonMark 仕様とリファレンス実装に関する作業を行った John MacFarlane に多大な感謝を申し上げます。彼の働きにより、このプロジェクトの開発中に多くの時間を節約できました。
関連リンク:
https://github.com/jgm/CommonMark - C および JS での CommonMark 実装のリファレンス。最新の仕様とオンライン デモも含まれています。
http://talk.commonmark.org - CommonMark フォーラム。開発者の取り組みを協力するのに最適な場所です。
ポート
motion-markdown-it - Ruby/RubyMotion
markdown-it-py-Python