Travailler avec Markdown dans Node.js : bibliothèques d'analyse et de conversion
\n\nMarkdown 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\n1. Bibliothèque marked
\n\nmarked 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\nInstallation
\nnpm install marked\n\nUtilisation de base
\nPour convertir une chaîne Markdown en HTML, il suffit d'appeler la fonction marked() :
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\nRé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\nConfiguration des options
\nmarked prend en charge de nombreuses options pour personnaliser la sortie :
\nconst 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\nUtilisation synchrone et asynchrone
\nPar défaut, marked() fonctionne de manière synchrone, mais prend également en charge le mode asynchrone via les promesses :
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\n2. Bibliothèque showdown
\n\nshowdown 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\nInstallation
\nnpm install showdown\n\nUtilisation de base
\nCréez une instance du convertisseur et appelez la méthode makeHtml() :
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\nRésultat :
\n<h2>Sous-titre</h2>\n<p>Texte normal avec <strong>mise en évidence</strong>.</p>\n\nExtensions et personnalisation
\nshowdown permet d'ajouter vos propres extensions, par exemple pour prendre en charge les émoticônes ou les formules LaTeX :
\nconst 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 Aussi dans la bibliothèque
Blade PHP : guide complet avec exemples pratiques
ClosedXML C# (.NET) : guide complet avec exemples
Génération de PDF en Swift (iOS/macOS) : UIGraphicsPDFRenderer, PDFKit et Core Graphics
Configuration des applications Swift : outils et bibliothèques pour iOS/macOS