このページとあなたの好きなAIアシスタントを使ってドキュメントを要約します
バージョン履歴
- "マークダウンコンテンツの自動装飾、MDXおよびSSRサポート"v8.11.02026/5/28
- "`.content.md`ファイルサポートを追加"v8.10.02026/5/19
- "`intlayerMarkdown`プラグインオブジェクトを追加。`app.use(installIntlayerMarkdown)`の代わりに`app.use(intlayerMarkdown)`を使用"v8.5.02026/3/24
- "インポートを`{{framework}}-intlayer`から`{{framework}}-intlayer/markdown`に移動"v8.5.02026/3/24
- "MarkdownRenderer / useMarkdownRenderer / renderMarkdownユーティリティとforceInlineオプションを追加"v8.0.02026/1/22
- "マークダウンコンテンツの自動装飾、MDXおよびSSRサポート"v8.0.02026/1/18
- "履歴を初期化"v5.5.102025/6/29
このページのコンテンツはAIを使用して翻訳されました。
英語の元のコンテンツの最新バージョンを見るこのドキュメントを改善するアイデアがある場合は、GitHubでプルリクエストを送信することで自由に貢献してください。
ドキュメントへのGitHubリンクドキュメントのMarkdownをクリップボードにコピー
Markdown / Rich Text Content
Intlayerは、Markdown構文を使用して定義されたリッチテキストコンテンツをサポートしています。これにより、ブログ、記事など、リッチなフォーマットを持つコンテンツを簡単に記述および維持できます。
Markdownコンテンツの宣言
md関数を使用するか、単純に文字列として(Markdownシンタックスを含む場合)Markdownコンテンツを宣言できます。
バージョン8.10.0以降、.content.mdファイルでMarkdownコンテンツを直接宣言できます。Intlayerは
Markdownコンテンツを自動的に検出して解析します。
コードをクリップボードにコピー
localeフロントマターフィールドはコンテンツのロケールを定義するフィールドです。これはオプションです。提供されない場合、Intlayerはデフォルトロケールを使用します。これは特定のロケールに対して翻訳が利用できない場合のフォールバックロケールとしても使用されます。
ファイル構造の例:
コードをクリップボードにコピー
Dictionary definitionで定義されているプロパティをフロントマターに追加できます
md関数を使用してMarkdownコンテンツを明示的に宣言します。これは、明らかなシンタックスが含まれていなくても、文字列がMarkdownとして処理されることを確認したい場合に便利です。
コードをクリップボードにコピー
file関数を使用して.mdファイルを直接importします。
コードをクリップボードにコピー
文字列に一般的なMarkdown指標(ヘッダー、リスト、リンクなど)が含まれている場合、Intlayerは自動的にそれを変換します。
コードをクリップボードにコピー
Markdown のレンダリング
Intlayer は Markdown をレンダリングするための 2 つの独立した方法を提供します:
useIntlayer経由 — Intlayer は自動的にmdノードをフレームワークのネイティブ出力 (JSX、VNode、HTML 文字列) に変換します。- Frontmatter は解析され、
.metadataとして公開されます。レンダリングはグローバルにMarkdownProvider(またはフレームワークと同等のもの) で、ノードごとにローカルで.use()で、2 つのレベルでオーバーライドできます。両者は組み合わせることができます。.use()はMarkdownProviderに優先し、MarkdownProviderはデフォルトに優先します。
- Frontmatter は解析され、
ヘルパーユーティリティ —
<MarkdownRenderer />、useMarkdownRenderer()、およびrenderMarkdown()は、生の Markdown 文字列のみ を受け入れるスタンドアロンツールです。これらはuseIntlayerから独立しており、それが返す装飾されたノードでは機能しません。
Markdown レンダリングは MDX をサポートしています — Markdown 内で JSX/フレームワークコンポーネントを名前で直接使用できます。
1. 自動レンダリング(useIntlayer経由)
Markdownノードは直接JSXとしてレンダリングできます。
コードをクリップボードにコピー
MarkdownProviderが存在しない場合、intlayerはデフォルトのMarkdown to JSXパーサーを使用してMarkdownをレンダリングします。
.use()メソッドを使用して特定のノードのローカルオーバーライドを提供することもできます:
コードをクリップボードにコピー
Markdownを文字列として取得できます:
コードをクリップボードにコピー
また、Markdownのメタデータにアクセスできます:
コードをクリップボードにコピー
Markdownノードは直接JSXとしてレンダリングできます。
コードをクリップボードにコピー
MarkdownProviderが存在しない場合、intlayerはデフォルトのMarkdown to JSXパーサーを使用してMarkdownをレンダリングします。
.use()メソッドを使用して特定のノードのローカルオーバーライドを提供することもできます:
コードをクリップボードにコピー
Markdownを文字列として取得できます:
コードをクリップボードにコピー
また、Markdownのメタデータにアクセスできます:
コードをクリップボードにコピー
Vueでは、Markdownコンテンツはcomponentビルトインまたはノードとして直接レンダリングできます。
コードをクリップボードにコピー
intlayerMarkdownプラグイン経由でグローバルに設定します(MDXカスタムコンポーネントをサポート):
コードをクリップボードにコピー
intlayerMarkdownプラグインがインストールされていない場合、Intlayerはデフォルトのコンパイラーを使用してレンダリングします。
.use()メソッドを使用して特定のノードのローカルオーバーライドを提供することもできます:
コードをクリップボードにコピー
Markdownを文字列として取得できます:
コードをクリップボードにコピー
また、Markdownのメタデータにアクセスできます:
コードをクリップボードにコピー
SvelteはデフォルトでMarkdownをHTML文字列としてレンダリングします。{@html}を使用してレンダリングします。
コードをクリップボードにコピー
MarkdownProviderが存在しない場合、Intlayerはデフォルトのコンパイラーを使用してMarkdownをレンダリングします。
.use()メソッドを使用して特定のノードのローカルオーバーライドを提供することもできます:
コードをクリップボードにコピー
Markdownを文字列として取得できます:
コードをクリップボードにコピー
また、Markdownのメタデータにアクセスできます:
コードをクリップボードにコピー
PreactはMarkdownノードを直接JSXでサポートしています。
コードをクリップボードにコピー
MarkdownProviderが存在しない場合、intlayerはデフォルトのMarkdown to JSXパーサーを使用してMarkdownをレンダリングします。
.use()メソッドを使用して特定のノードのローカルオーバーライドを提供することもできます:
コードをクリップボードにコピー
Markdownを文字列として取得できます:
コードをクリップボードにコピー
また、Markdownのメタデータにアクセスできます:
コードをクリップボードにコピー
Solidはmarkdownノードを直接JSXでサポートしています。
コードをクリップボードにコピー
MarkdownProviderが存在しない場合、intlayerはデフォルトのMarkdown to JSXパーサーを使用してMarkdownをレンダリングします。
.use()メソッドを使用して特定のノードのローカルオーバーライドを提供することもできます:
コードをクリップボードにコピー
Markdownを文字列として取得できます:
コードをクリップボードにコピー
また、Markdownのメタデータにアクセスできます:
コードをクリップボードにコピー
Angularは[innerHTML]ディレクティブを使用してMarkdownコンテンツをレンダリングします。
コードをクリップボードにコピー
IntlayerMarkdownプロバイダーが設定されていない場合、Intlayerはデフォルトのコンパイラーを使用してレンダリングします。
.use()メソッドを使用して特定のノードのローカルオーバーライドを提供することもできます:
コードをクリップボードにコピー
Markdownを文字列として取得できます:
コードをクリップボードにコピー
また、Markdownのメタデータにアクセスできます:
コードをクリップボードにコピー
Remix 3 では、Markdown ノードはサーバー上で HTML 文字列にレンダリングされます。Remix JSX の innerHTML プロパティ、または html-template ビューの html.raw を使用して挿入します。
コードをクリップボードにコピー
コードをクリップボードにコピー
Remix はデフォルトで補間された値をエスケープします。innerHTMLとhtml.rawはエスケープを回避する2つの方法であり、レンダリングされた Markdown 文字列に必要なものです。
.use() メソッドを使用して、特定のタグのローカルオーバーライドを指定することもできます。オーバーライドは HTML 文字列を返す関数です:
コードをクリップボードにコピー
.value はレンダリングされたHTML文字列であり、String() / .toString() は生のMarkdownソースを返します:
コードをクリップボードにコピー
また、次のようにMarkdownメタデータにアクセスできます:
コードをクリップボードにコピー
Astro では、Markdown ノードは HTML 文字列にレンダリングされます。テンプレート内の set:html ディレクティブ、またはクライアントの <script> 内の innerHTML を使用して挿入します。
コードをクリップボードにコピー
コードをクリップボードにコピー
Astro はデフォルトで{式}をエスケープします。set:htmlはエスケープを回避する方法であり、レンダリングされた Markdown 文字列に必要なものです。
.use() メソッドを使用して、特定のタグのローカルオーバーライドを指定することもできます。オーバーライドは HTML 文字列を返す関数です:
コードをクリップボードにコピー
.value はレンダリングされたHTML文字列であり、String() / .toString() は生のMarkdownソースを返します:
コードをクリップボードにコピー
また、次のようにMarkdownメタデータにアクセスできます:
コードをクリップボードにコピー
2. ヘルパーユーティリティ(Markdown文字列のみ)
これらのユーティリティはraw Markdown文字列をレンダリングし、useIntlayerに依存しません。辞書以外のソースからMarkdownをレンダリングする必要がある場合に使用してください。
<MarkdownRenderer /> コンポーネント
特定のオプションで Markdown 文字列をレンダリングします。
コードをクリップボードにコピー
useMarkdownRenderer() Hook
事前に設定されたレンダラー関数を取得します。
コードをクリップボードにコピー
renderMarkdown() ユーティリティ
コンポーネント外でレンダリングするためのスタンドアロンユーティリティ。
コードをクリップボードにコピー
<MarkdownRenderer /> コンポーネント
特定のオプションを使用して Markdown 文字列をレンダリングします。
コードをクリップボードにコピー
useMarkdownRenderer() Hook
事前に構成されたレンダラー関数を取得します。
コードをクリップボードにコピー
renderMarkdown() ユーティリティ
コンポーネント外でのレンダリング用のスタンドアロンユーティリティ。
コードをクリップボードにコピー
<MarkdownRenderer /> コンポーネント
コードをクリップボードにコピー
<MarkdownRenderer /> コンポーネント
コードをクリップボードにコピー
useMarkdownRenderer() Hook
コードをクリップボードにコピー
renderMarkdown() ユーティリティ
コードをクリップボードにコピー
<MarkdownRenderer /> コンポーネント
コードをクリップボードにコピー
useMarkdownRenderer() Hook
コードをクリップボードにコピー
renderMarkdown() ユーティリティ
コードをクリップボードにコピー
<MarkdownRenderer /> コンポーネント
コードをクリップボードにコピー
useMarkdownRenderer() Hook
コードをクリップボードにコピー
renderMarkdown() ユーティリティ
コードをクリップボードにコピー
IntlayerMarkdownService サービス
サービスを使用してMarkdown文字列をレンダリングします。
コードをクリップボードにコピー
useMarkdownRenderer() フック
installIntlayerMarkdown() によって事前設定されたレンダラー関数を取得します。HTML 文字列を返します。
コードをクリップボードにコピー
renderMarkdown() ユーティリティ
グローバル設定を無視するスタンドアロンユーティリティ。
コードをクリップボードにコピー
useMarkdownRenderer() フック
installIntlayerMarkdown() によって事前設定されたレンダラー関数を取得します。HTML 文字列を返します。
コードをクリップボードにコピー
renderMarkdown() ユーティリティ
グローバル設定を無視するスタンドアロンユーティリティ。
コードをクリップボードにコピー
MarkdownProvider を使用したグローバル設定
MarkdownProvider(またはそのフレームワーク相当)は、アプリケーション全体の Markdown レンダリングパイプラインを設定します。自動的な useIntlayer レンダリングとヘルパーユーティリティの両方に適用されます。ここで設定されたオプションはデフォルトです — .use() はノードレベルでそれらをオーバーライドします。
コードをクリップボードにコピー
MDX がサポートされています — Markdown 内で使用されるコンポーネント名(例:<MyCustomJSXComponent />)はcomponentsマップに対して解決されます。
独自の Markdown レンダラーを使用することもできます:
コードをクリップボードにコピー
Markdown レンダラーを動的にインポートすることは、アプリケーションのバンドルサイズを削減するためのよい方法です。
コードをクリップボードにコピー
MDX がサポートされています — Markdown 内で使用されるコンポーネント名(例:<MyCustomJSXComponent />)はcomponentsマップに対して解決されます。
独自の Markdown レンダラーを使用することもできます:
コードをクリップボードにコピー
Markdown レンダラーを動的にインポートすることは、アプリケーションのバンドルサイズを削減するためのよい方法です。
コードをクリップボードにコピー
MDX がサポートされています — Markdown 内で使用されるコンポーネント名(例:<MyCustomJSXComponent />)はcomponentsマップに対して解決されます。
独自の Markdown レンダラーを使用することもできます:
コードをクリップボードにコピー
Markdown レンダラーを動的にインポートすることは、アプリケーションのバンドルサイズを削減するためのよい方法です。
コードをクリップボードにコピー
MDX がサポートされています — Markdown 内で使用されるコンポーネント名(例:<MyCustomJSXComponent />)はcomponentsマップに対して解決されます。
独自の Markdown レンダラーを使用することもできます:
コードをクリップボードにコピー
Markdown レンダラーを動的にインポートすることは、アプリケーションのバンドルサイズを削減するためのよい方法です。
コードをクリップボードにコピー
MDX がサポートされています — Markdown 内で使用されるコンポーネント名(例:<MyCustomJSXComponent />)はcomponentsマップに対して解決されます。
独自の Markdown レンダラーを使用することもできます:
コードをクリップボードにコピー
Markdown レンダラーを動的にインポートすることは、アプリケーションのバンドルサイズを削減するためのよい方法です。
コードをクリップボードにコピー
MDX がサポートされています — Markdown 内で使用されるコンポーネント名(例:<MyCustomJSXComponent />)はcomponentsマップに対して解決されます。
独自の Markdown レンダラーを使用することもできます:
コードをクリップボードにコピー
Markdown レンダラーを動的にインポートすることは、アプリケーションのバンドルサイズを削減するためのよい方法です。
コードをクリップボードにコピー
MDX がサポートされています — Markdown 内で使用されるコンポーネント名(例:<MyCustomJSXComponent />)はcomponentsマップに対して解決されます。
独自の Markdown レンダラーを使用することもできます:
コードをクリップボードにコピー
Markdown レンダラーを動的にインポートすることは、アプリケーションのバンドルサイズを削減するためのよい方法です。
Remix にはプロバイダーを保持するコンポーネントツリーがないため、設定はサーバー起動時にシングルトンとして一度だけインストールされます。useMarkdownRenderer() によって返されるレンダラーを設定します。useIntlayer によって返される md ノードはデフォルトのコンパイラでレンダリングされます。ノードごとに .use() でタグをオーバーライドします。
コードをクリップボードにコピー
独自のMarkdownレンダラーを使用することもできます:
コードをクリップボードにコピー
レンダラー自体を遅延読み込みするには installIntlayerMarkdownDynamic(async () => …) を使用します。ローダーは最初の呼び出し時にのみ実行されます。
Astro にはプロバイダーを保持するコンポーネントツリーがないため、設定はミドルウェア(サーバー)およびクライアント <script>(ブラウザ)でシングルトンとして一度だけインストールされます。useMarkdownRenderer() によって返されるレンダラーを設定します。useIntlayer によって返される md ノードはデフォルトのコンパイラでレンダリングされます。ノードごとに .use() でタグをオーバーライドします。
コードをクリップボードにコピー
独自のMarkdownレンダラーを使用することもできます:
コードをクリップボードにコピー
レンダラー自体を遅延読み込みするには installIntlayerMarkdownDynamic(async () => …) を使用します。ローダーは最初の呼び出し時にのみ実行されます。
Suspense
Intlayer Markdown レンダラーは動的に読み込まれます。最適化されていますが、基盤となるパーサーチャンクは約 55kb です。これを同期的に読み込むと、初期ページレンダリングが遅延し、First Contentful Paint (FCP) が低下します。
UI をブロックするのを防ぐため、Intlayer は React の Suspense API と統合されています。バックグラウンドでパーサーを取得し、ダウンロード中に Promise をスローします。
Intlayer Markdown をレンダリングするコンポーネントを <Suspense> 境界でラップします。これにより、チャンクがダウンロード中にローカライズされたフォールバック状態が表示され、DOM の残りが即座にレンダリングできます。
警告: <Suspense> 境界を指定しない場合、React はルートレベルで一時停止するか、55kb チャンク全体が完全に読み込まれるまでコンポーネントツリー全体のレンダリングをブロックします。
Next.js App Router では、クライアントコンポーネント用に React Suspense を使用するか、サーバーコンポーネント用に loading.tsx ファイルを使用できます。
クライアントコンポーネント:
コードをクリップボードにコピー
loading.tsx を使用したサーバーコンポーネント:
コードをクリップボードにコピー
コードをクリップボードにコピー
コードをクリップボードにコピー
Vue には組み込みの <Suspense> コンポーネントがあります。Markdown コンテンツをレンダリングするコンポーネントを <Suspense> 境界でラップします。
コードをクリップボードにコピー
Svelte には同等の Suspense API がありません。{#await} ブロックを使用して Markdown コンテンツの非同期レンダリングを処理します。
コードをクリップボードにコピー
Preact は preact/compat 経由で React の Suspense API をサポートしています。
コードをクリップボードにコピー
Solid には solid-js からの独自の <Suspense> コンポーネントがあります。
コードをクリップボードにコピー
Angular には Suspense API がありません。Angular の遅延可能ビュー (@defer) を使用して、遅延読み込みされた Markdown コンテンツを処理します (Angular 17 以上が必要)。
コードをクリップボードにコピー
Server-Side Rendering (SSR) と Hydration
remark / rehype などの他の Markdown パーサーと比較して、Intlayer Markdown は依存関係がなく、クライアント側とサーバー側の両方で実行されます。
しかし Intlayer は Server-Side Rendering (SSR) フレームワーク(Next.js App Router、React Router、Nuxt、SvelteKit など)用にパースを最適化しています。
生の Markdown 文字列をクライアントに送信してブラウザーで解析する代わりに(パフォーマンス低下を招きます)、Intlayer では Markdown をサーバー上の Abstract Syntax Tree (AST) に事前解析することができます。
フレームワークの Intlayer パッケージから parseMarkdown 関数をサーバー側で使用して、シリアライズ可能な AST(ParsedMarkdown オブジェクト)を生成し、フロントエンドに直接渡すことができます。すべての Intlayer レンダリング ユーティリティ(<MarkdownRenderer>、useMarkdownRenderer など)は、このAST オブジェクトを自動的に受け入れ、シームレスにレンダリングします。
Server/Client アーキテクチャの例
コードをクリップボードにコピー
コードをクリップボードにコピー
コードをクリップボードにコピー
コードをクリップボードにコピー
コードをクリップボードにコピー
コードをクリップボードにコピー
Angular SSR は通常、初期読み込み中にサーバー上でデータを解決し、クライアント上でハイドレーションします。リゾルバーを使用して AST を渡すことができます。
コードをクリップボードにコピー
コードをクリップボードにコピー
Remix 3 はサーバー上でレンダリングして HTML をストリーミングするため、AST をクライアントに送信する必要はありません。一度パースし、ページが構築される場所で AST をレンダリングします:
コードをクリップボードにコピー
Astro ページはサーバー上でレンダリングされるため、AST をクライアントに送信する必要はありません。frontmatter で Markdown をパースし、set:html でレンダリングします:
コードをクリップボードにコピー
このパターンにより、markdown の解析ロジックが完全にサーバー上で実行され、クライアント側の実行時間が大幅に削減され、初期ハイドレーション速度が向上します。
オプションリファレンス
これらのオプションは MarkdownProvider、MarkdownRenderer、useMarkdownRenderer、renderMarkdown に渡すことができます。
テーブルをモーダルで開き、すべてのデータを明確に表示
| Option | Type | Default | Description |
|---|---|---|---|
forceBlock | boolean | false | 出力をブロックレベル要素(例:<div>)でラップすることを強制します。 |
forceInline | boolean | false | 出力をインライン要素(例:<span>)でラップすることを強制します。 |
tagfilter | boolean | true | GitHub Tag Filter を有効にして、危険な HTML タグを削除することで、セキュリティを向上させます。 |
preserveFrontmatter | boolean | false | true の場合、Markdown 文字列の先頭にある frontmatter は削除されません。 |
components | Overrides | {} | HTML タグをカスタムコンポーネントにマップするオブジェクト(例:{ h1: MyHeading })。 |
wrapper | Component | null | レンダリングされた Markdown をラップするカスタムコンポーネント。 |
renderMarkdown | Function | null | デフォルトの Markdown コンパイラを完全に置き換えるカスタムレンダリング関数。 |
