remark-parse vs remark-gfm vs remark-mdx vs remark-frontmatter vs remark-html
Markdown処理
remark-parseremark-gfmremark-mdxremark-frontmatterremark-html類似パッケージ:
Markdown処理

Markdown処理ライブラリは、Markdown形式のテキストを解析(パース)し、HTMLなどの他の形式に変換するためのツールです。これらのライブラリは、Markdownの文法を理解し、テキスト内の構造(見出し、リスト、リンクなど)を認識して、適切なHTMLタグに変換します。これにより、Markdownで書かれたコンテンツをウェブページやアプリケーションで表示できるようになります。remarkは、Markdownを扱うためのプラグインベースのライブラリで、解析、変換、操作を行うための柔軟なAPIを提供します。

npmのダウンロードトレンド
3 年
GitHub Starsランキング
統計詳細
パッケージ
ダウンロード数
Stars
サイズ
Issues
公開日時
ライセンス
remark-parse16,379,8878,63619.5 kB42年前MIT
remark-gfm9,066,4431,09622 kB210ヶ月前MIT
remark-mdx4,158,11019,07114.7 kB203ヶ月前MIT
remark-frontmatter1,911,11930921.2 kB02年前MIT
remark-html488,81933617 kB02年前MIT
機能比較: remark-parse vs remark-gfm vs remark-mdx vs remark-frontmatter vs remark-html

フロントマター処理

  • remark-parse:

    remark-parseはフロントマター処理を行いません。

  • remark-gfm:

    remark-gfmはフロントマター処理を行いません。

  • remark-mdx:

    remark-mdxはフロントマター処理を行いません。

  • remark-frontmatter:

    remark-frontmatterは、Markdown内のフロントマターを解析し、ASTに追加します。これにより、フロントマターに含まれるメタデータ(タイトル、日付、タグなど)を簡単に取得できます。

  • remark-html:

    remark-htmlはフロントマター処理を行いません。

GFMサポート

  • remark-parse:

    remark-parseは、GFMをサポートするためには他のプラグイン(例:remark-gfm)が必要です。

  • remark-gfm:

    remark-gfmは、GFMを完全にサポートします。テーブル、チェックボックス、ストライクスルーなど、GFMのすべての機能を解析し、HTMLに変換します。

  • remark-mdx:

    remark-mdxは、GFMをサポートしますが、主にMDXコンテンツに焦点を当てています。

  • remark-frontmatter:

    remark-frontmatterは、GFM(GitHub Flavored Markdown)をサポートしていません。

  • remark-html:

    remark-htmlは、GFMをサポートするためには他のプラグイン(例:remark-gfm)が必要です。

HTML変換

  • remark-parse:

    remark-parseは、HTML変換を行いません。

  • remark-gfm:

    remark-gfmは、HTML変換を行いません。

  • remark-mdx:

    remark-mdxは、MarkdownをHTMLに変換しますが、MDXコンテンツを処理するための追加機能があります。

  • remark-frontmatter:

    remark-frontmatterは、HTML変換を行いません。

  • remark-html:

    remark-htmlは、MarkdownをHTMLに変換します。

MDXサポート

  • remark-parse:

    remark-parseは、MDXをサポートしていません。

  • remark-gfm:

    remark-gfmは、MDXをサポートしていません。

  • remark-mdx:

    remark-mdxは、MDXをサポートします。Markdown内にReactコンポーネントを埋め込むことができます。

  • remark-frontmatter:

    remark-frontmatterは、MDXをサポートしていません。

  • remark-html:

    remark-htmlは、MDXをサポートしていません。

コード例

  • remark-parse:

    Markdown解析の例

    import { remark } from 'remark';
    import remarkParse from 'remark-parse';
    
    const markdown = '# Hello World';
    const ast = await remark()
      .use(remarkParse)
      .process(markdown);
    
    console.log(ast);
    
  • remark-gfm:

    GFMの例

    | Header 1 | Header 2 |
    | -------- | -------- |
    | Row 1    | Cell 1   |
    | Row 2    | Cell 2   |
    
    - [ ] Task 1
    - [x] Task 2
    
  • remark-mdx:

    MDXの例

    # Hello MDX
    
    <MyComponent />
    
  • remark-frontmatter:

    フロントマターの例

    ---
    title: My Post
    author: John Doe
    date: 2023-01-01
    ---
    # Hello World
    This is a Markdown post with front matter.
    
  • remark-html:

    HTML変換の例

    import { remark } from 'remark';
    import remarkHtml from 'remark-html';
    
    const markdown = '# Hello World';
    const html = await remark()
      .use(remarkHtml)
      .process(markdown);
    
    console.log(html.toString());
    
選び方: remark-parse vs remark-gfm vs remark-mdx vs remark-frontmatter vs remark-html
  • remark-parse:

    remark-parseは、Markdownを解析してASTを生成するための基本的なプラグインです。Markdownの文法に従ってテキストを解析し、構造化されたデータ(AST)を作成します。これにより、他のプラグインやツールがMarkdownの内容を操作したり、変換したりすることができるようになります。

  • remark-gfm:

    remark-gfmは、GitHub Flavored Markdown(GFM)をサポートするためのプラグインです。GFMは、GitHubで使用されるMarkdownの拡張で、テーブル、チェックボックス、ストライクスルーなどの追加機能を提供します。このプラグインを使用することで、GFMの文法を正しく解析し、対応するHTMLに変換することができます。

  • remark-mdx:

    remark-mdxは、MDX(Markdown + JSX)をサポートするためのプラグインです。MDXは、Markdown内にReactコンポーネントを埋め込むことができるフォーマットで、よりインタラクティブなコンテンツを作成することができます。このプラグインを使用することで、MDXの文法を解析し、コンポーネントを正しく処理することができます。

  • remark-frontmatter:

    remark-frontmatterは、Markdownファイル内のフロントマター(メタデータ)を処理するためのプラグインです。特に、YAML形式やJSON形式のフロントマターを解析し、AST(抽象構文木)に追加します。これにより、フロントマターに含まれる情報を簡単に取得したり、操作したりすることができます。

  • remark-html:

    remark-htmlは、MarkdownをHTMLに変換するためのプラグインです。remarkのパイプラインの一部として使用され、MarkdownのASTを受け取り、対応するHTMLを生成します。シンプルで効果的な変換を提供し、カスタマイズも可能です。

remark-parse のREADME

remark-parse

Build Coverage Downloads Size Sponsors Backers Chat

remark plugin to add support for parsing from markdown.

Contents

What is this?

This package is a unified (remark) plugin that defines how to take markdown as input and turn it into a syntax tree.

See the monorepo readme for info on what the remark ecosystem is.

When should I use this?

This plugin adds support to unified for parsing markdown. If you also need to serialize markdown, you can alternatively use remark, which combines unified, this plugin, and remark-stringify.

If you just want to turn markdown into HTML (with maybe a few extensions), we recommend micromark instead. If you don’t use plugins and want to access the syntax tree, you can directly use mdast-util-from-markdown. remark focusses on making it easier to transform content by abstracting these internals away.

You can combine this plugin with other plugins to add syntax extensions. Notable examples that deeply integrate with it are remark-gfm, remark-mdx, remark-frontmatter, remark-math, and remark-directive. You can also use any other remark plugin after remark-parse.

Install

This package is ESM only. In Node.js (version 16+), install with npm:

npm install remark-parse

In Deno with esm.sh:

import remarkParse from 'https://esm.sh/remark-parse@11'

In browsers with esm.sh:

<script type="module">
  import remarkParse from 'https://esm.sh/remark-parse@11?bundle'
</script>

Use

Say we have the following module example.js:

import rehypeStringify from 'rehype-stringify'
import remarkGfm from 'remark-gfm'
import remarkParse from 'remark-parse'
import remarkRehype from 'remark-rehype'
import {unified} from 'unified'

const doc = `
# Mercury

**Mercury** is the first planet from the [Sun](https://en.wikipedia.org/wiki/Sun)
and the smallest planet in the Solar System.
`

const file = await unified()
  .use(remarkParse)
  .use(remarkGfm)
  .use(remarkRehype)
  .use(rehypeStringify)
  .process(doc)

console.log(String(file))

…then running node example.js yields:

<h1>Mercury</h1>
<p><strong>Mercury</strong> is the first planet from the <a href="https://en.wikipedia.org/wiki/Sun">Sun</a>
and the smallest planet in the Solar System.</p>

API

This package exports no identifiers. The default export is remarkParse.

unified().use(remarkParse)

Add support for parsing from markdown.

Parameters

There are no parameters.

Returns

Nothing (undefined).

Examples

Example: support GFM and frontmatter

We support CommonMark by default. Non-standard markdown extensions can be enabled with plugins.

This example shows how to support GFM features (autolink literals, footnotes, strikethrough, tables, tasklists) and frontmatter (YAML):

import rehypeStringify from 'rehype-stringify'
import remarkFrontmatter from 'remark-frontmatter'
import remarkGfm from 'remark-gfm'
import remarkParse from 'remark-parse'
import remarkRehype from 'remark-rehype'
import {unified} from 'unified'

const doc = `---
layout: solar-system
---

# Hi ~~Mars~~Venus!
`

const file = await unified()
  .use(remarkParse)
  .use(remarkFrontmatter)
  .use(remarkGfm)
  .use(remarkRehype)
  .use(rehypeStringify)
  .process(doc)

console.log(String(file))

Yields:

<h1>Hi <del>Mars</del>Venus!</h1>

Example: turning markdown into a man page

Man pages (short for manual pages) are a way to document CLIs (example: type man git-log in your terminal). They use an old markup format called roff. There’s a remark plugin, remark-man, that can serialize as roff.

This example shows how to turn markdown into man pages by using unified with remark-parse and remark-man:

import remarkMan from 'remark-man'
import remarkParse from 'remark-parse'
import {unified} from 'unified'

const doc = `
# titan(7) -- largest moon of saturn

Titan is the largest moon…
`

const file = await unified().use(remarkParse).use(remarkMan).process(doc)

console.log(String(file))

Yields:

.TH "TITAN" "7" "September 2023" "" ""
.SH "NAME"
\fBtitan\fR - largest moon of saturn
.P
Titan is the largest moon…

Syntax

Markdown is parsed according to CommonMark. Other plugins can add support for syntax extensions. If you’re interested in extending markdown, more information is available in micromark’s readme.

Syntax tree

The syntax tree used in remark is mdast.

Types

This package is fully typed with TypeScript. It exports the additional type Options (which is currently empty).

Compatibility

Projects maintained by the unified collective are compatible with maintained versions of Node.js.

When we cut a new major release, we drop support for unmaintained versions of Node. This means we try to keep the current release line, remark-parse@^11, compatible with Node.js 16.

Security

As markdown can be turned into HTML and improper use of HTML can open you up to cross-site scripting (XSS) attacks, use of remark can be unsafe. When going to HTML, you will combine remark with rehype, in which case you should use rehype-sanitize.

Use of remark plugins could also open you up to other attacks. Carefully assess each plugin and the risks involved in using them.

For info on how to submit a report, see our security policy.

Contribute

See contributing.md in remarkjs/.github for ways to get started. See support.md for ways to get help. Join us in Discussions to chat with the community and contributors.

This project has a code of conduct. By interacting with this repository, organization, or community you agree to abide by its terms.

Sponsor

Support this effort and give back by sponsoring on OpenCollective!

Vercel

Motif

HashiCorp

GitBook

Gatsby

Netlify

Coinbase

ThemeIsle

Expo

Boost Note

Markdown Space

Holloway


You?

License

MIT © Titus Wormer