unified

Project: micromark/micromark-extension-gfm

Package: micromark-extension-gfm@1.0.0

  1. Dependents: 7
  2. micromark extension to support GFM (GitHub Flavored Markdown)
  1. unified 174
  2. markdown 131
  3. micromark 32
  4. gfm 18
  5. micromark-extension 15
  6. table 12
  7. github 9
  8. strikethrough 6
  9. autolink 5
  10. tasklist 3
  11. tagfilter 3

micromark-extension-gfm

Build Coverage Downloads Size Sponsors Backers Chat

micromark extension to support GitHub flavored markdown. This extension matches either the GFM spec or github.com (default).

This package provides the low-level modules for integrating with the micromark tokenizer and the micromark HTML compiler.

When to use this

If you’re using micromark or mdast-util-from-markdown, use this package. Alternatively, if you’re using remark, use remark-gfm.

If you don’t need all of GFM, the extensions can be used separately:

Install

This package is ESM only: Node 12+ is needed to use it and it must be imported instead of required.

npm:

npm install micromark-extension-gfm

Use

Say we have the following file, example.md:

# GFM

## Autolink literals

www.example.com, https://example.com, and contact@example.com.

## Footnote

A note[^1]

[^1]: Big note.

## Strikethrough

~one~ or ~~two~~ tildes.

## Table

| a | b  |  c |  d  |
| - | :- | -: | :-: |

## Tag filter

<plaintext>

## Tasklist

* [ ] to do
* [x] done

And our module, example.js, looks as follows:

import fs from 'node:fs'
import {micromark} from 'micromark'
import {gfm, gfmHtml} from 'micromark-extension-gfm'

const output = micromark(fs.readFileSync('example.md'), {
  allowDangerousHtml: true,
  extensions: [gfm()],
  htmlExtensions: [gfmHtml()]
})

console.log(output)

Now, running node example yields:

<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:contact@example.com">contact@example.com</a>.</p>
<h2>Footnote</h2>
<p>A note<sup><a href="#user-content-fn-1" id="user-content-fnref-1" data-footnote-ref="" aria-describedby="footnote-label">1</a></sup></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>Tag filter</h2>
&lt;plaintext>
<h2>Tasklist</h2>
<ul>
<li><input disabled="" type="checkbox"> to do</li>
<li><input checked="" disabled="" type="checkbox"> done</li>
</ul>
<section data-footnotes="" class="footnotes"><h2 id="footnote-label" class="sr-only">Footnotes</h2>
<ol>
<li id="user-content-fn-1">
<p>Big note. <a href="#user-content-fnref-1" data-footnote-backref="" class="data-footnote-backref" aria-label="Back to content"></a></p>
</li>
</ol>
</section>

API

This package exports the following identifiers: gfm, gfmHtml. There is no default export.

gfm(options?)

gfmHtml(htmlOptions?)

Support GFM or markdown on github.com. gfm is a function that can be called with options and returns an extension for micromark to parse GFM (can be passed in extensions). gfmHtml is a function that can be called and returns an extension for micromark to compile as elements (can be passed in htmlExtensions).

options
options.singleTilde

Passed as singleTilde in micromark-extension-gfm-strikethrough.

htmlOptions.clobberPrefix

Prefix to use before the id attribute to prevent it from clobbering attributes (string, default: 'user-content-'). Passed as clobberPrefix in micromark-extension-gfm-footnote.

htmlOptions.label

Label to use for the footnotes section (string, default: 'Footnotes'). Passed as label in micromark-extension-gfm-footnote.

htmlOptions.backLabel

Label to use from backreferences back to their footnote call (string, default: 'Back to content'). Passed as backLabel in micromark-extension-gfm-footnote.

Contribute

See contributing.md in micromark/.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.

License

MIT © Titus Wormer