Security News
JavaScript Leaders Demand Oracle Release the JavaScript Trademark
In an open letter, JavaScript community leaders urge Oracle to give up the JavaScript trademark, arguing that it has been effectively abandoned through nonuse.
micromark-extension-gfm
Advanced tools
The micromark-extension-gfm npm package is an extension for the micromark Markdown parser that adds support for GitHub Flavored Markdown (GFM). This extension enables users to parse and render Markdown text according to the specifications of GFM, which includes several GitHub-specific features such as tables, task lists, and strikethrough.
Tables
This feature allows the parsing of tables in Markdown formatted text. The code sample demonstrates how to convert a simple Markdown table into HTML using the micromark parser with the gfmTable extension.
import {micromark} from 'micromark';
import {gfmTable} from 'micromark-extension-gfm-table';
const markdown = '| Header 1 | Header 2 |\n| -------- | -------- |\n| Cell 1 | Cell 2 |';
const html = micromark(markdown, {extensions: [gfmTable()]});
console.log(html);
Task Lists
This feature supports the rendering of task lists, where tasks can be marked as completed or incomplete. The code sample shows how to convert Markdown task list items into HTML.
import {micromark} from 'micromark';
import {gfmTaskListItem} from 'micromark-extension-gfm-task-list-item';
const markdown = '- [x] Completed task\n- [ ] Incomplete task';
const html = micromark(markdown, {extensions: [gfmTaskListItem()]});
console.log(html);
Strikethrough
This feature enables the use of strikethrough text formatting in Markdown. The code sample illustrates how to parse and convert strikethrough text from Markdown to HTML.
import {micromark} from 'micromark';
import {gfmStrikethrough} from 'micromark-extension-gfm-strikethrough';
const markdown = 'This is ~~strikethrough~~ text.';
const html = micromark(markdown, {extensions: [gfmStrikethrough()]});
console.log(html);
remark-gfm is another npm package that provides support for GitHub Flavored Markdown. It is built on top of the remark Markdown processor and is similar to micromark-extension-gfm in functionality but uses a different underlying Markdown parsing library.
markdown-it is a Markdown parser that can be extended with plugins, including those for GFM features. It is similar to micromark-extension-gfm but offers a different API and plugin ecosystem, potentially providing more customization options for users.
micromark extension to support GitHub flavored markdown (GFM).
This package is a micromark extension to add support for all GFM features: autolink literals, footnotes, strikethrough, tables, tagfilter, and tasklists.
You probably should use this package if you use micromark and want to enable
GFM.
When working with syntax trees, you’d want to combine this package with
mdast-util-gfm
.
You can also use the underlying features separately:
micromark/micromark-extension-gfm-autolink-literal
— support GFM autolink literalsmicromark/micromark-extension-gfm-footnote
— support GFM footnotesmicromark/micromark-extension-gfm-strikethrough
— support GFM strikethroughmicromark/micromark-extension-gfm-table
— support GFM tablesmicromark/micromark-extension-gfm-tagfilter
— support GFM tagfiltermicromark/micromark-extension-gfm-task-list-item
— support GFM tasklistsThese tools are all rather low-level.
In most cases, you’d instead want to use remark-gfm
with
remark.
This package is ESM only. In Node.js (version 12.20+, 14.14+, or 16.0+), install with npm:
npm install micromark-extension-gfm
In Deno with Skypack:
import {gfm, gfmHtml} from 'https://cdn.skypack.dev/micromark-extension-gfm@2?dts'
In browsers with Skypack:
<script type="module">
import {gfm, gfmHtml} from 'https://cdn.skypack.dev/micromark-extension-gfm@2?min'
</script>
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>
<plaintext>
<h2>Tasklist</h2>
<ul>
<li><input type="checkbox" disabled="" /> to do</li>
<li><input type="checkbox" disabled="" checked="" /> 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>
This package exports the following identifiers: gfm
, gfmHtml
.
There is no default export.
This extensions supports the endorsed development
condition.
Run node --conditions development module.js
to get instrumented dev code.
Without this condition, production code is loaded.
gfm(options?)
A function that can be called to get an extension for micromark to parse GFM
(can be passed in extensions
).
options
Configuration (optional).
options.singleTilde
Whether to support strikethrough with a single tilde (boolean
, default:
true
).
Single tildes work on github.com, but are technically prohibited by GFM.
Passed as singleTilde
in
micromark-extension-gfm-strikethrough
.
gfmHtml(htmlOptions?)
A function that can be called to get an extension to compile GFM to HTML (can be
passed in htmlExtensions
).
htmlOptions
Configuration (optional).
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
.
This package is fully typed with TypeScript.
It exports additional Options
and HtmlOptions
types that model their
respective interfaces.
This package is at least compatible with all maintained versions of Node.js. As of now, that is Node.js 12.20+, 14.14+, and 16.0+. It also works in Deno and modern browsers.
This package is safe by default.
syntax-tree/mdast-util-gfm
— support GFM in mdastremarkjs/remark-gfm
— support GFM in remarkmicromark/micromark-extension-gfm-autolink-literal
— support GFM autolink literalsmicromark/micromark-extension-gfm-footnote
— support GFM footnotesmicromark/micromark-extension-gfm-strikethrough
— support GFM strikethroughmicromark/micromark-extension-gfm-table
— support GFM tablesmicromark/micromark-extension-gfm-tagfilter
— support GFM tagfiltermicromark/micromark-extension-gfm-task-list-item
— support GFM tasklistsSee 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.
FAQs
micromark extension to support GFM (GitHub Flavored Markdown)
The npm package micromark-extension-gfm receives a total of 2,874,088 weekly downloads. As such, micromark-extension-gfm popularity was classified as popular.
We found that micromark-extension-gfm demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
In an open letter, JavaScript community leaders urge Oracle to give up the JavaScript trademark, arguing that it has been effectively abandoned through nonuse.
Security News
The initial version of the Socket Python SDK is now on PyPI, enabling developers to more easily interact with the Socket REST API in Python projects.
Security News
Floating dependency ranges in npm can introduce instability and security risks into your project by allowing unverified or incompatible versions to be installed automatically, leading to unpredictable behavior and potential conflicts.