Markdown-Parser richtig gemacht. Schnell und einfach erweiterbar.
Live-Demo
Entspricht der CommonMark-Spezifikation + fügt Syntaxerweiterungen und Zucker hinzu (URL-Autolinking, Typograf).
Konfigurierbare Syntax! Sie können neue Regeln hinzufügen und sogar bestehende ersetzen.
Hohe Geschwindigkeit.
Standardmäßig sicher.
Von der Community geschriebene Plugins und andere Pakete auf npm.
Inhaltsverzeichnis
Installieren
Anwendungsbeispiele
Einfach
Init mit Voreinstellungen und Optionen
Plugins werden geladen
Syntaxhervorhebung
Verknüpfen
API
Syntaxerweiterungen
Regeln verwalten
Benchmark
markdown-it für Unternehmen
Autoren
Referenzen / Danke
node.js :
npm install markdown-it
Browser (CDN):
jsDeliver CDN
cdnjs.com CDN
Siehe auch:
API-Dokumentation – für weitere Informationen und Beispiele.
Entwicklungsinformationen – für Plugin-Autoren.
// node.js// kann `require('markdown-it')` für CJSimport markdownit from 'markdown-it'const md = markdownit()const result = md.render('# markdown-it Rulezz!') verwenden ;// Browser mit UMD-Build, beim Laden des Skripts zu „window“ hinzugefügt// Hinweis: Es gibt keinen Bindestrich in „markdownit“.const md = window.markdownit();const result = md.render('# markdown-it Rulezz!');
Einzeilige Darstellung ohne Absatzumbruch:
import markdownit from 'markdown-it'const md = markdownit()const result = md.renderInline('__markdown-it__ Rulezz!');
(*) Voreinstellungen definieren Kombinationen aktiver Regeln und Optionen. Kann "commonmark"
, "zero"
oder "default"
sein (falls übersprungen). Weitere Informationen finden Sie in den API-Dokumenten.
markdownit aus 'markdown-it' importieren// commonmark modeconst md = markdownit('commonmark')// default modeconst md = markdownit()// alles aktivierenconst md = markdownit({ html: wahr, verknüpfen: wahr, typographer: true})// vollständige Optionsliste (Standardeinstellungen)const md = markdownit({ // HTML-Tags in der Quelle aktivieren html: falsch, // Verwenden Sie „/“, um einzelne Tags zu schließen (<br />). // Dies dient nur der vollständigen CommonMark-Kompatibilität. xhtmlOut: false, // 'n' in Absätzen in <br> umwandeln Pausen: falsch, // CSS-Sprachpräfix für umzäunte Blöcke. Kann sein // nützlich für externe Textmarker. langPrefix: 'Sprache-', // URL-ähnlichen Text automatisch in Links umwandeln verknüpfen: falsch, // Aktivieren Sie einige sprachneutrale Ersetzungen + Verschönerung von Anführungszeichen // Die vollständige Liste der Ersetzungen finden Sie unter https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/replacements.mjs Typograf: falsch, // Ersetzungspaare aus doppelten + einfachen Anführungszeichen, wenn der Typograf aktiviert ist, // und Smartquotes weiter. Könnte entweder ein String oder ein Array sein. // // Beispielsweise können Sie „«»„“ für Russisch, „„‚'' für Deutsch verwenden. // und ['«xA0', 'xA0»', '‹xA0', 'xA0›'] für Französisch (einschließlich nbsp). Zitate: '""''', // Highlighter-Funktion. Sollte maskiertes HTML zurückgeben, // oder '', wenn die Quellzeichenfolge nicht geändert wird und extern maskiert werden soll. // Wenn das Ergebnis mit <pre... beginnt, wird der interne Wrapper übersprungen. hervorheben: function (/*str, lang*/) { return ''; }});
markdownit aus 'markdown-it' importieren const md = markdownit .use(plugin1) .use(plugin2, opts, ...) .use(plugin3);
Wenden Sie Syntaxhervorhebung auf eingezäunte Codeblöcke mit der Option highlight
an:
markdownit aus 'markdown-it' importieren, hljs aus 'highlight.js' importieren // https://highlightjs.org// Tatsächliche Standardwerteconst md = markdownit({ hervorheben: function (str, lang) {if (lang && hljs.getLanguage(lang)) { try {return hljs.highlight(str, { language: lang }).value; } Catch (__) {}}return ''; // Externes Standard-Escape verwenden }});
Oder mit vollständiger Wrapper-Überschreibung (wenn Sie <pre>
oder <code>
eine Klasse zuweisen müssen):
markdownit aus 'markdown-it' importieren, hljs aus 'highlight.js' importieren // https://highlightjs.org// Tatsächliche Standardwerteconst md = markdownit({ hervorheben: function (str, lang) {if (lang && hljs.getLanguage(lang)) { try {return '<pre><code class="hljs">' + hljs.highlight(str, { language: lang,ignoriereIllegals : true }).value + '</code></pre>'; } Catch (__) {}}return '<pre><code class="hljs">' + md.utils.escapeHtml(str) + '</code></pre>'; }});
linkify: true
verwendet linkify-it. Um linkify-it zu konfigurieren, greifen Sie über md.linkify
auf die Linkify-Instanz zu:
md.linkify.set({ fuzzyEmail: false }); // deaktiviert die Konvertierung von E-Mails in Links
API-Dokumentation
Wenn Sie Plugins schreiben möchten, schauen Sie sich bitte die Entwicklungsinformationen an.
Eingebettet (standardmäßig aktiviert):
Tabellen (GFM)
Durchgestrichen (GFM)
Über Plugins:
Index
hochgestellt
Fußnote
Definitionsliste
Abkürzung
Emoji
Benutzerdefinierter Container
einfügen
markieren
... und andere
Standardmäßig sind alle Regeln aktiviert, können aber durch Optionen eingeschränkt werden. Beim Laden des Plugins werden alle seine Regeln automatisch aktiviert.
markdownit aus 'markdown-it' importieren// Regeln aktivieren/deaktivieren, mit curryingconst md = markdownit() .disable(['link', 'image']) .enable(['link']) .enable('image');// Alles aktivierenconst md = markdownit({ html: wahr, verknüpfen: wahr, Typograf: true,});
Alle Regeln finden Sie in den Quellen:
parser_core.mjs
parser_block.mjs
parser_inline.mjs
Hier ist das Ergebnis der Readme-Analyse bei MB Pro Retina 2013 (2,4 GHz):
npm run benchmark-deps benchmark/benchmark.mjs Readme Ausgewählte Beispiele: (1 von 28) > README Beispiel: README.md (7774 Bytes) > commonmark-reference x 1.222 ops/sec ±0,96 % (97 Läufe abgetastet) > aktuell x 743 ops/sec ±0,84 % (97 Läufe abgetastet) > current-commonmark x 1.568 ops/sec ±0,84 % (98 Läufe abgetastet) > markiert x 1.587 Operationen/Sek ±4,31 % (93 Probeläufe)
Notiz. Die CommonMark-Version läuft mit vereinfachten Link-Normalisierern für einen „ehrlicheren“ Vergleich. Der Unterschied beträgt ≈1,5×.
Wie Sie sehen, zahlt sich markdown-it
nicht mit der Geschwindigkeit für seine Flexibilität aus. Verlangsamung der „Vollversion“ aufgrund zusätzlicher Funktionen, die in anderen Implementierungen nicht verfügbar sind.
Verfügbar als Teil des Tidelift-Abonnements.
Die Betreuer von markdown-it
und Tausenden anderer Pakete arbeiten mit Tidelift zusammen, um kommerziellen Support und Wartung für die Open-Source-Abhängigkeiten bereitzustellen, die Sie zum Erstellen Ihrer Anwendungen verwenden. Sparen Sie Zeit, reduzieren Sie Risiken und verbessern Sie den Zustand des Codes, während Sie gleichzeitig die Betreuer der genauen Abhängigkeiten bezahlen, die Sie verwenden. Erfahren Sie mehr.
Alex Kocharin github/rlidwka
Vitaly Puzrin github/puzrin
markdown-it ist das Ergebnis der Entscheidung der Autoren, die zu 99 % des Remarkable -Codes beigetragen haben, zu einem Projekt mit derselben Autorenschaft, aber neuer Führung (Vitaly und Alex) überzugehen. Es ist keine Gabel.
Großer Dank geht an John MacFarlane für seine Arbeit an der CommonMark-Spezifikation und den Referenzimplementierungen. Seine Arbeit hat uns bei der Entwicklung dieses Projekts viel Zeit gespart.
Verwandte Links:
https://github.com/jgm/CommonMark – Referenz zu CommonMark-Implementierungen in C und JS, enthält auch die neueste Spezifikation und Online-Demo.
http://talk.commonmark.org – CommonMark-Forum, ein guter Ort, um bei den Bemühungen von Entwicklern zusammenzuarbeiten.
Häfen
motion-markdown-it – Ruby/RubyMotion
markdown-it-py- Python