Trabalhando com Markdown em Node.js: visão geral de bibliotecas e ferramentas
Markdown é uma linguagem de marcação popular, usada para formatar texto em documentação, blogs, arquivos README e plataformas educacionais. No ecossistema Node.js, existem várias bibliotecas poderosas que permitem converter Markdown para HTML, processar código, tabelas e outros elementos. Neste artigo, veremos três das ferramentas mais populares: marked, remarkable e showdown, além de analisarmos exemplos de uso.
1. Biblioteca marked
Marked é uma das bibliotecas mais rápidas e leves para parsing de Markdown. Ela não possui dependências externas e suporta CommonMark e GFM (GitHub Flavored Markdown).
Instalação
npm install markedUso básico
const marked = require('marked');
const markdownString = '# TítuloEste é um texto **negrito** e *itálico*.
- Item 1- Item 2';
const html = marked.parse(markdownString);console.log(html);Resultado da execução:
<h1 id="título">Título</h1><p>Este é um texto <strong>negrito</strong> e <em>itálico</em>.</p><ul><li>Item 1</li><li>Item 2</li></ul>Configuração de opções
Marked suporta várias opções para ajuste fino do parsing:
const marked = require('marked');
marked.setOptions({ breaks: true, // quebra de linhas em <br> gfm: true, // suporte a GFM headerIds: false // desabilitar id nos cabeçalhos});
const html = marked.parse('Linha 1Linha 2');console.log(html);// <p>Linha 1<br>Linha 2</p>2. Biblioteca remarkable
Remarkable é uma biblioteca flexível com suporte a plugins e extensões. Ela permite adicionar sintaxe para fórmulas matemáticas, diagramas e outros elementos específicos.
Instalação
npm install remarkableExemplo de uso
const { Remarkable } = require('remarkable');const md = new Remarkable();
const markdown = '## Subtítulo
`code` e `código inline`';const html = md.render(markdown);console.log(html);Saída:
<h2>Subtítulo</h2><p><code>code</code> e <code>código inline</code></p>Plugins e extensões
Remarkable suporta plugins para processar tabelas, listas de tarefas e outros elementos:
const { Remarkable } = require('remarkable');const md = new Remarkable({ html: true, linkify: true});
// Adicionando plugin para tabelasmd.renderer.rules.table_open = function() { return '<table class="table">';};
const html = md.render('| Coluna 1 | Coluna 2 ||-----------|-----------|| Dados 1 | Dados 2 |');console.log(html);3. Biblioteca showdown
Showdown é um port do Showdown original para JavaScript. É simples de usar e adequado para aplicações cliente-servidor.
Instalação
npm install showdownExemplo de código
const showdown = require('showdown');const converter = new showdown.Converter();
const markdown = '**Negrito** e *itálico*';const html = converter.makeHtml(markdown);console.log(html);// <p><strong>Negrito</strong> e <em>itálico</em></p>Configuração de extensões
Showdown suporta extensões que podem ser adicionadas para incluir novas funcionalidades:
const showdown = require('showdown');
// Criando uma extensão para realce de códigoconst myExt = { type: 'output',