Analisador Markdown bem feito. Rápido e fácil de estender.
Demonstração ao vivo
Segue a especificação CommonMark + adiciona extensões de sintaxe e açúcar (link automático de URL, tipógrafo).
Sintaxe configurável! Você pode adicionar novas regras e até substituir as existentes.
Alta velocidade.
Seguro por padrão.
Plug-ins escritos pela comunidade e outros pacotes no npm.
Índice
Instalar
Exemplos de uso
Simples
Inicializar com predefinições e opções
Carregamento de plug-ins
Destaque de sintaxe
Vincular
API
Extensões de sintaxe
Gerenciar regras
Referência
markdown-it para empresas
Autores
Referências / Obrigado
node.js :
npm install markdown-it
navegador (CDN):
jsDeliver CDN
cdnjs.com CDN
Veja também:
Documentação da API – para mais informações e exemplos.
Informações de desenvolvimento - para criadores de plugins.
// node.js// pode usar `require('markdown-it')` para CJSimport markdownit de 'markdown-it'const md = markdownit()const result = md.render('# markdown-it regrazz!') ;// navegador com construção UMD, adicionado à "janela" no carregamento do script // Nota, não há traço em "markdownit".const md = window.markdownit();const result = md.render('# markdown-it regrazz!');
Renderização de linha única, sem quebra de parágrafo:
importar markdownit de 'markdown-it'const md = markdownit() const resultado = md.renderInline('__markdown-it__ regrazz!');
(*) as predefinições definem combinações de regras e opções ativas. Pode ser "commonmark"
, "zero"
ou "default"
(se ignorado). Consulte a documentação da API para obter mais detalhes.
import markdownit de 'markdown-it'// commonmark modeconst md = markdownit('commonmark')// modeconst md padrão = markdownit()// ativar tudoconst md = markdownit({ HTML: verdadeiro, linkificar: verdadeiro, typographer: true})// lista completa de opções (padrões)const md = markdownit({ // Habilita tags HTML na fonte html: falso, // Use '/' para fechar tags únicas (<br />). // Isto é apenas para compatibilidade total com CommonMark. xhtmlOut: falso, // Converte 'n' em parágrafos em <br> quebras: falso, // Prefixo da linguagem CSS para blocos protegidos. Pode ser // útil para marcadores externos. langPrefix: 'idioma-', // Converte automaticamente texto semelhante a URL em links linkificar: falso, // Habilita alguma substituição neutra em termos de linguagem + embelezamento de citações // Para obter a lista completa de substituições, consulte https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/replacements.mjs tipógrafo: falso, // Pares de substituição de aspas duplas + simples, quando o tipógrafo estiver ativado, // e citações inteligentes ativadas. Pode ser uma String ou um Array. // // Por exemplo, você pode usar '«»„“' para russo, '„“‚'' para alemão, // e ['«xA0', 'xA0»', '‹xA0', 'xA0›'] para francês (incluindo nbsp). citações: '""''', // Função de realce. Deve retornar HTML com escape, // ou '' se a string de origem não foi alterada e deve ter escape externo. // Se o resultado começar com <pre... o wrapper interno será ignorado. destaque: function (/*str, lang*/) { return ''; }});
importar markdownit de 'markdown-it'const md = markdownit .use(plugin1) .use(plugin2, opções, ...) .use(plugin3);
Aplique realce de sintaxe a blocos de código protegidos com a opção highlight
:
importar markdownit de 'markdown-it'importar hljs de 'highlight.js' // https://highlightjs.org// Valores padrão reaisconst md = markdownit({ destaque: função (str, lang) {if (lang && hljs.getLanguage(lang)) { tente {return hljs.highlight(str, { idioma: lang }).value; } catch (__) {}}retornar ''; // usa escape padrão externo }});
Ou com substituição completa do wrapper (se você precisar atribuir classe a <pre>
ou <code>
):
importar markdownit de 'markdown-it'importar hljs de 'highlight.js' // https://highlightjs.org// Valores padrão reaisconst md = markdownit({ destaque: função (str, lang) {if (lang && hljs.getLanguage(lang)) { tente {return '<pre><code class="hljs">' + hljs.highlight(str, { idioma: lang, ignoreIllegals : verdadeiro }).valor + '</code></pre>'; } catch (__) {}}return '<pre><code class="hljs">' + md.utils.escapeHtml(str) + '</code></pre>'; }});
linkify: true
usa linkify-it. Para configurar o linkify-it, acesse a instância do linkify através de md.linkify
:
md.linkify.set({fuzzyEmail: false }); //desativa a conversão de e-mail em link
Documentação da API
Se você for escrever plug-ins, dê uma olhada nas informações de desenvolvimento.
Incorporado (ativado por padrão):
Tabelas (GFM)
Tachado (GFM)
Através de plug-ins:
subscrito
sobrescrito
nota de rodapé
lista de definições
abreviação
emoticons
contêiner personalizado
inserir
marca
... e outros
Por padrão, todas as regras estão habilitadas, mas podem ser restritas por opções. Ao carregar o plugin, todas as suas regras são habilitadas automaticamente.
import markdownit from 'markdown-it'// Ativa/desativa regras, com curryingconst md = markdownit() .disable(['link', 'imagem']) .enable(['link']) .enable('image');// Habilita tudoconst md = markdownit({ HTML: verdadeiro, linkificar: verdadeiro, tipógrafo: verdadeiro,});
Você pode encontrar todas as regras nas fontes:
parser_core.mjs
parser_block.mjs
parser_inline.mjs
Aqui está o resultado da análise leia-me no MB Pro Retina 2013 (2,4 GHz):
npm executa benchmark-deps leia-me de benchmark/benchmark.mjs Amostras selecionadas: (1 de 28) > README Amostra: README.md (7774 bytes) > referência de marca comum x 1.222 operações/seg ±0,96% (97 execuções amostradas) > corrente x 743 operações/seg ±0,84% (97 execuções amostradas) > marca comum atual x 1.568 operações/seg ±0,84% (98 execuções amostradas) > marcado x 1.587 operações/s ±4,31% (93 execuções amostradas)
Observação. A versão CommonMark é executada com normalizadores de link simplificados para uma comparação mais "honesta". A diferença é ≈1,5×.
Como você pode ver, markdown-it
não compensa com velocidade por sua flexibilidade. Lentidão da versão "completa" causada por recursos adicionais não disponíveis em outras implementações.
Disponível como parte da assinatura Tidelift.
Os mantenedores do markdown-it
e de milhares de outros pacotes estão trabalhando com o Tidelift para fornecer suporte comercial e manutenção para as dependências de código aberto que você usa para construir seus aplicativos. Economize tempo, reduza riscos e melhore a integridade do código, enquanto paga os mantenedores das dependências exatas que você usa. Saber mais.
Alex Kocharin github/rlidwka
Vitaly Puzrin github/puzrin
markdown- é o resultado da decisão dos autores que contribuíram com 99% do código Remarkable de passar para um projeto com a mesma autoria, mas com nova liderança (Vitaly e Alex). Não é um garfo.
Muito obrigado a John MacFarlane por seu trabalho nas especificações CommonMark e nas implementações de referência. Seu trabalho nos economizou muito tempo durante o desenvolvimento deste projeto.
Links relacionados:
https://github.com/jgm/CommonMark - faz referência às implementações do CommonMark em C e JS, também contém as especificações mais recentes e a demonstração online.
http://talk.commonmark.org - Fórum CommonMark, bom lugar para colaborar nos esforços dos desenvolvedores.
Portas
motion-markdown-it - Ruby/RubyMotion
markdown-it-py - Python