A configurable remark-gfm that allows you to toggle the GitHub Flavored Markdown (GFM) features.
This package has the same functionality as remark-gfm, with the additional ability to enable or disable specific GFM features like autolinks, footnotes, tables, and more.
remark-gfm-custom is available on both npm and JSR.
# Deno
deno add npm:remark-gfm-custom
# Bun
bun add remark-gfm-custom
# pnpm
pnpm add remark-gfm-custom
# npm
npm install remark-gfm-custom# Deno - JSR
deno add jsr:@qz/remark-gfm-custom
# Bun - JSR
bunx jsr add @qz/remark-gfm-custom
# pnpm - JSR
pnpm i jsr:@qz/remark-gfm-custom
# npm - JSR
npx jsr add @qz/remark-gfm-customimport assert from "node:assert";
import remarkParse from "remark-parse";
import remarkRehype from "remark-rehype";
import rehypeStringify from "rehype-stringify";
import { unified } from "unified";
import { remarkGfmCustom } from "remark-gfm-custom";
const file = await unified()
.use(remarkParse)
// This disables the GFM autolink feature.
.use(remarkGfmCustom, { plugins: { autolinkLiteral: false } })
.use(remarkRehype)
.use(rehypeStringify)
.process("https://example.com");
assert.equal(file.toString(), "<p>https://example.com</p>");This package exports the following:
function remarkGfmCustom(options?: Options): void;The main plugin. It receives one optional parameter to configure behavior. See the
Options section below for configuration details.
type Options = {
remarkGfm?: FootnoteOptions | TableOptions | StrikethroughOptions;
plugins?: {
autolinkLiteral?: boolean;
footnote?: boolean;
strikethrough?: boolean;
table?: boolean;
taskListItem?: boolean;
};
};Configuration for remarkGfmCustom. This consists of two main categories:
remarkGfm and plugins.
type remarkGfm = FootnoteOptions | TableOptions | StrikethroughOptions;Options passed directly to the remark-gfm plugins. The available fields are:
type firstLineBlank = boolean;Serialize with a blank line for the first line of footnote definitions.
- Default:
false. - Reference: https://github.com/remarkjs/remark-gfm#options
type stringLength = (value: string) => number;Detect the size of table cells, used when aligning cells.
- Default:
d => d.length. - Reference: https://github.com/remarkjs/remark-gfm#options
type singleTilde = boolean;Whether to support strikethrough with a single tilde. Single tildes work on GitHub but are technically prohibited by GFM.
- Default:
true. - Reference: https://github.com/remarkjs/remark-gfm#options
type tablePipeAlign = boolean;Whether to align table pipes.
- Default:
true. - Reference: https://github.com/remarkjs/remark-gfm#options
type tableCellPadding = boolean;Whether to add a space of padding between table pipes and cells.
- Default:
true. - Reference: https://github.com/remarkjs/remark-gfm#options
Options to enable or disable specific remark-gfm bundled plugins.
All fields below are boolean and default to true. Set a field to false to disable that
specific GFM feature.
Toggle GFM literal autolinks.
Toggle the GFM footnotes.
Toggle the GFM strikethrough.
Toggle the GFM tables.
Toggle the GFM task list items.
Please see CONTRIBUTING.md for contribution guidelines.