このページとあなたの好きな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のメタデータにアクセスできます:
コードをクリップボードにコピー
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文字列をレンダリングします。
コードをクリップボードにコピー
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 レンダラーを動的にインポートすることは、アプリケーションのバンドルサイズを削減するためのよい方法です。
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 を渡すことができます。
コードをクリップボードにコピー
コードをクリップボードにコピー
このパターンにより、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 コンパイラを完全に置き換えるカスタムレンダリング関数。 |
