Traitement Markdown dans Node.js : bibliothèques marked, showdown et remarkable

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Travailler avec Markdown dans Node.js : bibliothèques d'analyse et de conversion

\n\n

Markdown est un langage de balisage léger, largement utilisé pour formater du texte dans la documentation, les fichiers README, les blogs et les systèmes de gestion de contenu. Dans l'écosystème Node.js, il existe plusieurs bibliothèques puissantes qui permettent d'analyser Markdown et de le convertir en HTML, ainsi que d'effectuer l'opération inverse. Dans cet article, nous examinerons trois des outils les plus populaires : marked, showdown et remarkable, leurs fonctionnalités, leur API et des exemples d'utilisation.

\n\n

1. Bibliothèque marked

\n\n

marked est un analyseur Markdown rapide et léger qui prend en charge tous les éléments syntaxiques de base (titres, listes, liens, images, code, tableaux, etc.). Il se distingue par ses hautes performances et sa simplicité de configuration.

\n\n

Installation

\n
npm install marked
\n\n

Utilisation de base

\n

Pour convertir une chaîne Markdown en HTML, il suffit d'appeler la fonction marked() :

\n
const marked = require('marked');\n\nconst markdownText = `\n# Bonjour le monde !\n\nCeci est du **texte en gras** et de l'*italique*.\n\n- Élément de liste 1\n- Élément de liste 2\n\n[Lien vers PythonLib](https://pythonlib.ru)\n`;\n\nconst html = marked(markdownText);\nconsole.log(html);\n
\n\n

Résultat de l'exécution :

\n
<h1>Bonjour le monde !</h1>\n<p>Ceci est du <strong>texte en gras</strong> et de l'<em>italique</em>.</p>\n<ul>\n<li>Élément de liste 1</li>\n<li>Élément de liste 2</li>\n</ul>\n<p><a href="https://pythonlib.ru">Lien vers PythonLib</a></p>
\n\n

Configuration des options

\n

marked prend en charge de nombreuses options pour personnaliser la sortie :

\n
const marked = require('marked');\n\nmarked.setOptions({\n  breaks: true,       // convertir les sauts de ligne en <br>\n  gfm: true,          // activer GitHub Flavored Markdown (tableaux, barré, etc.)\n  headerIds: false,   // ne pas ajouter d'ID aux titres\n  mangle: false,      // ne pas échapper les adresses email\n  sanitize: false     // ne pas supprimer les balises HTML (dangereux, à utiliser avec précaution)\n});\n\nconst html = marked('Ligne 1\\nLigne 2');\nconsole.log(html); // Affiche avec <br> entre les lignes\n
\n\n

Utilisation synchrone et asynchrone

\n

Par défaut, marked() fonctionne de manière synchrone, mais prend également en charge le mode asynchrone via les promesses :

\n
const marked = require('marked');\n\nasync function convertMarkdown(text) {\n  const html = await marked.parse(text);\n  return html;\n}\n\nconvertMarkdown('# Titre').then(console.log);\n
\n\n

2. Bibliothèque showdown

\n\n

showdown est un autre analyseur Markdown populaire qui peut fonctionner à la fois dans le navigateur et dans Node.js. Il fournit une API extensible et prend en charge de nombreuses extensions.

\n\n

Installation

\n
npm install showdown
\n\n

Utilisation de base

\n

Créez une instance du convertisseur et appelez la méthode makeHtml() :

\n
const showdown = require('showdown');\nconst converter = new showdown.Converter();\n\nconst markdownText = '## Sous-titre\\n\\nTexte normal avec **mise en évidence**.';\nconst html = converter.makeHtml(markdownText);\nconsole.log(html);\n
\n\n

Résultat :

\n
<h2>Sous-titre</h2>\n<p>Texte normal avec <strong>mise en évidence</strong>.</p>
\n\n

Extensions et personnalisation

\n

showdown permet d'ajouter vos propres extensions, par exemple pour prendre en charge les émoticônes ou les formules LaTeX :

\n
const showdown = require('showdown');\n\n// Création d'une extension pour remplacer :smile: par un emoji\nconst emojiExtension = function() {\n  return [{\n    type: 'lang',\n    regex: /:smile:/g,\n    replace: '😊'\n  }];\n};\n\n                    

Recommendations