Procesamiento de Markdown en Node.js: bibliotecas marked, showdown y remarkable

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Trabajo con Markdown en Node.js: bibliotecas para análisis y conversión

\n\n

Markdown es un lenguaje de marcado ligero, ampliamente utilizado para formatear texto en documentación, archivos README, blogs y sistemas de gestión de contenido. En el ecosistema de Node.js existen varias bibliotecas potentes que permiten analizar Markdown y convertirlo a HTML, así como realizar la operación inversa. En este artículo, revisaremos tres de las herramientas más populares: marked, showdown y remarkable, sus características, API y ejemplos de uso.

\n\n

1. Biblioteca marked

\n\n

marked es un analizador de Markdown rápido y ligero que soporta todos los elementos básicos de sintaxis (encabezados, listas, enlaces, imágenes, código, tablas, etc.). Se destaca por su alto rendimiento y facilidad de configuración.

\n\n

Instalación

\n
npm install marked
\n\n

Uso básico

\n

Para convertir una cadena Markdown a HTML, basta con llamar a la función marked():

\n
const marked = require('marked');\n\nconst markdownText = `\n# ¡Hola, mundo!\n\nEste es **texto en negrita** y *cursiva*.\n\n- Elemento de lista 1\n- Elemento de lista 2\n\n[Enlace a PythonLib](https://pythonlib.ru)\n`;\n\nconst html = marked(markdownText);\nconsole.log(html);\n
\n\n

Resultado de la ejecución:

\n
<h1>¡Hola, mundo!</h1>\n<p>Este es <strong>texto en negrita</strong> y <em>cursiva</em>.</p>\n<ul>\n<li>Elemento de lista 1</li>\n<li>Elemento de lista 2</li>\n</ul>\n<p><a href="https://pythonlib.ru">Enlace a PythonLib</a></p>
\n\n

Configuración de opciones

\n

marked admite múltiples opciones para personalizar la salida:

\n
const marked = require('marked');\n\nmarked.setOptions({\n  breaks: true,       // convertir saltos de línea en <br>\n  gfm: true,          // habilitar GitHub Flavored Markdown (tablas, tachado, etc.)\n  headerIds: false,   // no agregar ID a los encabezados\n  mangle: false,      // no escapar direcciones de correo electrónico\n  sanitize: false     // no eliminar etiquetas HTML (peligroso, usar con precaución)\n});\n\nconst html = marked('Línea 1\\nLínea 2');\nconsole.log(html); // Mostrará con <br> entre líneas\n
\n\n

Uso síncrono y asíncrono

\n

Por defecto, marked() funciona de forma síncrona, pero también admite el modo asíncrono mediante promesas:

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

2. Biblioteca showdown

\n\n

showdown es otro analizador de Markdown popular que puede funcionar tanto en el navegador como en Node.js. Proporciona una API extensible y admite múltiples extensiones.

\n\n

Instalación

\n
npm install showdown
\n\n

Uso básico

\n

Cree una instancia del convertidor y llame al método makeHtml():

\n
const showdown = require('showdown');\nconst converter = new showdown.Converter();\n\nconst markdownText = '## Subencabezado\\n\\nTexto normal con **énfasis**.';\nconst html = converter.makeHtml(markdownText);\nconsole.log(html);\n
\n\n

Resultado:

\n
<h2>Subencabezado</h2>\n<p>Texto normal con <strong>énfasis</strong>.</p>
\n\n

Extensiones y personalización

\n

showdown permite agregar extensiones personalizadas, por ejemplo, para soportar emojis o fórmulas LaTeX:

\n
const showdown = require('showdown');\n\n// Creamos una extensión para reemplazar :smile: por un emoji\nconst emojiExtension = function() {\n  return [{\n    type: 'lang',\n    regex: /:smile:/g,\n    replace: '😊'\n  }];\n};\n\n                    

Recommendations