Trabajo con Markdown en Node.js: resumen de bibliotecas y herramientas
Markdown es un popular lenguaje de marcado utilizado para formatear texto en documentación, blogs, archivos README y plataformas educativas. En el ecosistema de Node.js existen varias bibliotecas potentes que permiten convertir Markdown a HTML, procesar código, tablas y otros elementos. En este artículo analizaremos las tres herramientas más populares: marked, remarkable y showdown, y revisaremos ejemplos de su uso.
1. Biblioteca marked
Marked es una de las bibliotecas más rápidas y ligeras para analizar Markdown. No tiene dependencias externas y es compatible con CommonMark y GFM (GitHub Flavored Markdown).
Instalación
npm install markedUso básico
const marked = require('marked');
const markdownString = '# TítuloEste es texto **negrita** y *cursiva*.
- Elemento 1- Elemento 2';
const html = marked.parse(markdownString);console.log(html);Resultado de la ejecución:
<h1 id="título">Título</h1><p>Este es <strong>texto negrita</strong> y <em>cursiva</em>.</p><ul><li>Elemento 1</li><li>Elemento 2</li></ul>Configuración de opciones
Marked admite múltiples opciones para un ajuste fino del análisis:
const marked = require('marked');
marked.setOptions({ breaks: true, // salto de línea a <br> gfm: true, // soporte GFM headerIds: false // desactivar id en encabezados});
const html = marked.parse('Línea 1Línea 2');console.log(html);// <p>Línea 1<br>Línea 2</p>2. Biblioteca remarkable
Remarkable es una biblioteca flexible con soporte para plugins y extensiones. Permite añadir sintaxis para fórmulas matemáticas, diagramas y otros elementos específicos.
Instalación
npm install remarkableEjemplo de uso
const { Remarkable } = require('remarkable');const md = new Remarkable();
const markdown = '## Subtítulo
`code` y `código en línea`';const html = md.render(markdown);console.log(html);Salida:
<h2>Subtítulo</h2><p><code>code</code> y <code>código en línea</code></p>Plugins y extensiones
Remarkable admite plugins para procesar tablas, listas de tareas y otros elementos:
const { Remarkable } = require('remarkable');const md = new Remarkable({ html: true, linkify: true});
// Añadir plugin para tablasmd.renderer.rules.table_open = function() { return '<table class="table">';};
const html = md.render('| Columna 1 | Columna 2 ||-----------|-----------|| Dato 1 | Dato 2 |');console.log(html);3. Biblioteca showdown
Showdown es un puerto del Showdown original para JavaScript. Es fácil de usar y muy adecuado para aplicaciones cliente-servidor.
Instalación
npm install showdownEjemplo de código
const showdown = require('showdown');const converter = new showdown.Converter();
const markdown = '**Negrita** y *cursiva*';const html = converter.makeHtml(markdown);console.log(html);// <p><strong>Negrita</strong> y <em>cursiva</em></p>Configuración de extensiones
Showdown admite extensiones que se pueden añadir para incorporar nuevas funcionalidades:
const showdown = require('showdown');
// Crear extensión para resaltado de códigoconst myExt = { type: 'output',