remark plugin to support GitHub Flavored Markdown.
This plugin is made for the new parser in remark
(micromark
,
see remarkjs/remark#536
).
While you’re still on remark 12, use the gfm
option for remark.
Use this plugin for remark 13+.
npm:
npm install remark-gfm
Say we have the following file, example.md
:
# GFM
## Autolink literals
www.example.com, https://example.com, and [email protected].
## Strikethrough
~one~ or ~~two~~ tildes.
## Table
| a | b | c | d |
| - | :- | -: | :-: |
## Tasklist
* [ ] to do
* [x] done
And our script, example.js
, looks as follows:
var vfile = require('to-vfile')
var report = require('vfile-reporter')
var unified = require('unified')
var parse = require('remark-parse')
var gfm = require('remark-gfm')
var remark2rehype = require('remark-rehype')
var stringify = require('rehype-stringify')
unified()
.use(parse)
.use(gfm)
.use(remark2rehype)
.use(stringify)
.process(vfile.readSync('example.md'), function (err, file) {
console.error(report(err || file))
console.log(String(file))
})
Now, running node example
yields:
example.md: no issues found
<h1>GFM</h1>
<h2>Autolink literals</h2>
<p><a href="http://www.example.com">www.example.com</a>, <a href="https://example.com">https://example.com</a>, and <a href="mailto:[email protected]">[email protected]</a>.</p>
<h2>Strikethrough</h2>
<p><del>one</del> or <del>two</del> tildes.</p>
<h2>Table</h2>
<table>
<thead>
<tr>
<th>a</th>
<th align="left">b</th>
<th align="right">c</th>
<th align="center">d</th>
</tr>
</thead>
</table>
<h2>Tasklist</h2>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" disabled> to do</li>
<li class="task-list-item"><input type="checkbox" checked disabled> done</li>
</ul>
Configures remark so that it can parse and serialize GFM (autolink literals, strikethrough, tables, tasklists).
Whether to support strikethrough with a single tilde (boolean
, default:
true
).
Single tildes work on github.com, but are technically prohibited by the GFM
spec.
Passed as singleTilde
to
micromark-extension-gfm-strikethrough
.
Create tables with a space between cell delimiters (|
) and content (boolean
,
default: true
).
Passed to mdast-util-gfm-table
.
Align the delimiters (|
) between table cells so that they all align nicely and
form a grid (boolean
, default: true
).
Passed to mdast-util-gfm-table
.
Function passed to markdown-table
to detect the length of a
table cell (Function
, default: s => s.length
).
Used to align table cells.
Passed to mdast-util-gfm-table
.
Use of remark-gfm
does not involve rehype (hast) or
user content so there are no openings for cross-site scripting (XSS)
attacks.
remark-github
— Autolink references like in GitHub issues, PRs, and commentsremark-footnotes
— Footnotesremark-frontmatter
— Frontmatter (YAML, TOML, and more)remark-math
— Math
See contributing.md
in remarkjs/.github
for ways
to get started.
See support.md
for ways to get help.
This project has a code of conduct. By interacting with this repository, organization, or community you agree to abide by its terms.