L'analyseur Markdown est bien fait. Rapide et facile à étendre.
Démo en direct
Suit la spécification CommonMark + ajoute des extensions de syntaxe et du sucre (liaison automatique d'URL, typographe).
Syntaxe configurable ! Vous pouvez ajouter de nouvelles règles et même remplacer celles existantes.
Grande vitesse.
Coffre-fort par défaut.
Plugins écrits par la communauté et autres packages sur npm.
Table des matières
Installer
Exemples d'utilisation
Simple
Init avec préréglages et options
Chargement des plugins
Mise en évidence de la syntaxe
Linkifier
API
Extensions de syntaxe
Gérer les règles
Référence
démarquez-le pour les entreprises
Auteurs
Références / Remerciements
noeud.js :
npm installer markdown-it
navigateur (CDN) :
jsDeliver CDN
cdnjs.com CDN
Voir aussi :
Documentation API - pour plus d'informations et d'exemples.
Informations de développement - pour les auteurs de plugins.
// node.js// peut utiliser `require('markdown-it')` pour CJSimport markdownit à partir de 'markdown-it'const md = markdownit()const result = md.render('# markdown-it Rulezz!') ;// navigateur avec build UMD, ajouté à "window" lors du chargement du script// Remarque, il n'y a pas de tiret dans "markdownit".const md = window.markdownit();const result = md.render('# markdown-it règlezz !');
Rendu sur une seule ligne, sans retour à la ligne :
importer markdownit depuis 'markdown-it'const md = markdownit()const result = md.renderInline('__markdown-it__ Rulezz!');
(*) les préréglages définissent des combinaisons de règles et d'options actives. Peut être "commonmark"
, "zero"
ou "default"
(si ignoré). Consultez la documentation de l'API pour plus de détails.
importer markdownit depuis 'markdown-it'// commonmark modeconst md = markdownit('commonmark')// modeconst par défaut md = markdownit()// activer toutconst md = markdownit({ html : vrai, linkify : vrai, typographe : true})// liste complète des options (par défaut) const md = markdownit ({ // Activer les balises HTML dans la source html : faux, // Utilisez '/' pour fermer des balises uniques (<br />). // Ceci est uniquement pour une compatibilité totale avec CommonMark. xhtmlOut : faux, // Convertit le 'n' des paragraphes en <br> pauses : faux, // Préfixe du langage CSS pour les blocs clôturés. Peut être // utile pour les surligneurs externes. langPrefix : 'langue-', // Conversion automatique du texte de type URL en liens linkify : faux, // Activer un remplacement neutre en termes de langue + embellissement des citations // Pour la liste complète des remplacements, voir https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/replacements.mjs typographe : faux, // Paires de remplacement de guillemets doubles + simples, lorsque le typographe est activé, // et les smartquotes activés. Il peut s'agir d'une chaîne ou d'un tableau. // // Par exemple, vous pouvez utiliser '«»«»' pour le russe, '«»‚'' pour l'allemand, // et ['«xA0', 'xA0»', '‹xA0', 'xA0›'] pour le français (y compris nbsp). citations: '""''', // Fonction surligneur. Devrait renvoyer du HTML échappé, // ou '' si la chaîne source n'est pas modifiée et doit être échappée en externe. // Si le résultat commence par <pre... le wrapper interne est ignoré. surbrillance : fonction (/*str, lang*/) { return '' ; }});
importer markdownit depuis 'markdown-it'const md = markdownit .use(plugin1) .use(plugin2, opts, ...) .use(plugin3);
Appliquez la coloration syntaxique aux blocs de code isolés avec l'option highlight
:
importer markdownit depuis 'markdown-it' importer hljs depuis 'highlight.js' // https://highlightjs.org// Valeurs par défaut réellesconst md = markdownit({ highlight : function (str, lang) {if (lang && hljs.getLanguage(lang)) { try {return hljs.highlight(str, {langue : lang }).value ; } catch (__) {}}retour ''; // utilise l'échappement externe par défaut }});
Ou avec remplacement complet du wrapper (si vous avez besoin d'attribuer une classe à <pre>
ou <code>
) :
importer markdownit depuis 'markdown-it' importer hljs depuis 'highlight.js' // https://highlightjs.org// Valeurs par défaut réellesconst md = markdownit({ highlight : function (str, lang) {if (lang && hljs.getLanguage(lang)) { try {return '<pre><code class="hljs">' + hljs.highlight(str, { langue : lang, ignoreIllegals : true }).value + '</code></pre>'; } catch (__) {}}return '<pre><code class="hljs">' + md.utils.escapeHtml(str) + '</code></pre>'; }});
linkify: true
utilise linkify-it. Pour configurer linkify-it, accédez à l'instance linkify via md.linkify
:
md.linkify.set({ fuzzyEmail : false }); // désactive la conversion du courrier électronique en lien
Documentation API
Si vous envisagez d'écrire des plugins, veuillez consulter les informations de développement.
Intégré (activé par défaut) :
Tableaux (GFM)
Barré (GFM)
Via les plugins :
indice
exposant
note de bas de page
liste de définitions
abréviation
émoticône
conteneur personnalisé
insérer
marque
... et d'autres
Par défaut, toutes les règles sont activées, mais peuvent être restreintes par des options. Lors du chargement du plugin, toutes ses règles sont activées automatiquement.
importer markdownit depuis 'markdown-it'// Activer/désactiver les règles, avec curryingconst md = markdownit() .disable(['lien', 'image']) .enable(['lien']) .enable('image');// Activer toutconst md = markdownit({ html : vrai, linkify : vrai, typographe : vrai,});
Vous pouvez trouver toutes les règles dans les sources :
parser_core.mjs
parser_block.mjs
parser_inline.mjs
Voici le résultat de l'analyse readme sur MB Pro Retina 2013 (2,4 GHz) :
npm exécute des tests de référence benchmark/benchmark.mjs readme Échantillons sélectionnés : (1 sur 28) > README Échantillon : README.md (7 774 octets) > référence de marque commune x 1 222 opérations/s ±0,96 % (97 exécutions échantillonnées) > courant x 743 opérations/s ±0,84 % (97 exécutions échantillonnées) > marque commune actuelle x 1 568 opérations/s ±0,84 % (98 exécutions échantillonnées) > marqué x 1 587 opérations/sec ±4,31 % (93 essais échantillonnés)
Note. La version CommonMark fonctionne avec des normalisateurs de liens simplifiés pour une comparaison plus « honnête ». La différence est ≈1,5×.
Comme vous pouvez le constater, markdown-it
ne paie pas avec rapidité sa flexibilité. Ralentissement de la version "complète" causé par des fonctionnalités supplémentaires non disponibles dans d'autres implémentations.
Disponible dans le cadre de l’abonnement Tidelift.
Les responsables de markdown-it
et de milliers d'autres packages travaillent avec Tidelift pour fournir un support commercial et une maintenance pour les dépendances open source que vous utilisez pour créer vos applications. Gagnez du temps, réduisez les risques et améliorez la santé du code, tout en rémunérant les responsables des dépendances exactes que vous utilisez. Apprendre encore plus.
Alex Kocharine github/rlidwka
Vitaly Puzrin github/puzrin
markdown-c'est le résultat de la décision des auteurs qui ont contribué à 99% du code Remarkable de passer à un projet avec la même paternité mais une nouvelle direction (Vitaly et Alex). Ce n'est pas une fourchette.
Un grand merci à John MacFarlane pour son travail sur les spécifications CommonMark et les implémentations de référence. Son travail nous a fait gagner beaucoup de temps lors du développement de ce projet.
Liens connexes :
https://github.com/jgm/CommonMark - référence aux implémentations de CommonMark en C et JS, contient également les dernières spécifications et démo en ligne.
http://talk.commonmark.org - Forum CommonMark, bon endroit pour collaborer aux efforts des développeurs.
Ports
motion-markdown-it - Ruby/RubyMotion
markdown-it-py-Python