node-cmark
node-cmark is a Node.js wrapper around GitHub's fork of cmark, the reference implementation of CommonMark in C by John MacFarlane. You can find GitHub's fork at https://github.com/github/cmark.
Installation
npm install @binarymuse/cmark
Usage
html = renderHtmlSync(markdown[, options])
-
markdown
- a string containing Markdown to render to HTML -
options
- a hash of options (see Options, below)
renderHtml(markdown[, options], callback)
-
markdown
- a string containing Markdown to render to HTML -
options
- a hash of options (see Options, below) -
callback
- a function to call with the resulting HTML once the Markdown has been rendered-
html
- the resulting HTML
-
Options
You can control the behavior of node-cmark by passing options to the rendering functions. The available options are:
-
sourepos
- iftrue
, adds adata-sourcepos
attribute to all block elements that TODO?? -
safe
- iftrue
, suppresses raw HTML and unsafe links (javascript:
,vbscript:
,file:
, anddata:
except forimage/png
,image/gif
,image/jpeg
, orimage/webp
mime types). Raw HTML is replaced by a placeholder HTML comment. Unsafe links are replaced with empty strings. -
nobreaks
- iftrue
, renders softbreak elements as spaces -
hardbreaks
- iftrue
, renders softbreak elements as hard line breaks -
normalize
- iftrue
, adjacent text nodes are consolidated -
validateUtf8
- iftrue
, replaces illegal UTF-8 sequences withU+FFFD
-
smart
- iftrue
, replaces straight quotes with curly ones, turns---
into em dashes, and--
into en dashes -
extensions
- an array of extensions to enable. Valid extensions are:-
"table"
- render tables -
"strikethrough"
- strikethrough -
"tagfilter"
- whitelist something -
"autolink"
- automatically turn URLs into links
-
Rendering to HTML
You can turn a string containing Markdown into HTML either synchronously:
const cmark = require('node-cmark')
const markdown = '# Hello World'
const options = {}
const html = cmark.renderHtmlSync(markdown, options)
console.log(html)
or asynchronously
const cmark = require('node-cmark')
const markdown = '# Hello World'
const options = {}
cmark.renderHtml(markdown, options, (html) => {
console.log(html)
})
Note that options
may be omitted in either invocation.