unified

Project: micromark/micromark-extension-gfm

Package: micromark-extension-gfm@1.0.0

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

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.

## 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>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>

API

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

gfm(options?)

gfmHtml

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 an extension for micromark to compile as elements (can be passed in htmlExtensions).

options
options.singleTilde

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

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