@open-press/core/mdx
MDX ソース
MDX ソース登録は、プロパティとして <Press> に渡されます。エンジンはソースを読み取ってコンテンツファイルを検出し、ブロックをコンパイルし、それらを MdxArea スロットに送ります。そこから、原稿補助ツール、検索/置換、およびコメントマークアップライターに提供されます。
mdxSource インターフェースは、MDX コンテンツディレクトリを外部に登録する機能を提供します。システムはこのレジストリを通じて解析ターゲットを収集し、コンパイルされたブロックデータを MdxArea、検索エンジン、および編集エンドポイントに分配します。
1.0 契約: ソース宣言は <Press sources={...}> の必須プロパティです。<Press> コンポーネントリファレンスを参照してください。
`<Press>` で複数のコンテンツデータストリームを宣言し、各データストリームにグローバルで一意の `id` を割り当て、他のドキュメントコンポーネントが消費またはアドレス指定できるようにします。
<Press sources={[
mdxSource({ id: "story", preset: "section-folders", root: "chapters" }),
]}> 例:複数データソースの登録
<Press
title="Paper"
page="a4"
sources={[
mdxSource({ id: "story", preset: "section-folders", root: "report/chapters" }),
mdxSource({ id: "appendix", preset: "section-folders", root: "report/appendix" }),
]}
>
<Sections source="story" />
<Sections source="appendix" />
</Press> ファクトリ関数。`<Press>` 内部処理用に標準化されたデータソース登録オブジェクトを返します。
import { mdxSource } from "@open-press/core/mdx"; mdxSource(options: MdxSourceOptions): SourceRegistration オプション (MdxSourceOptions)
| Name | Type | Default | Description |
|---|---|---|---|
id required | string | 識別子。` | |
preset required | "section-folders" | "file-list" | `section-folders` は規則的なディレクトリ構造のスキャンを採用し、`file-list` は明示的に提供された `files` リストのスキャンに依存します。 | |
root | string | `press/` に対する相対的な検索ルートディレクトリ (例: `report/chapters`)。`file-list` モードを使用する場合は無視されます。 | |
files | string[] | `preset: "file-list"` を指定した場合の具体的な MDX ファイルの相対パス配列。 |
例:規則的なディレクトリの解析 (section-folders)
press/
report/
chapters/
01-intro/
content/
01-overview.mdx
02-context.mdxシステムは 01-intro/content/ 内のファイルを辞書順に連結し、単一の章ブロックストリームにマージします。
例:明示的なファイルリスト (file-list)
mdxSource({
id: "story",
preset: "file-list",
files: ["intro.mdx", "results.mdx", "conclusion.mdx"],
}); コンテンツのコンパイル制限 (ブロックのみのルール)
ソース MDX は ブロックのみ (Block-only) のルールに厳密に従う必要があります。レンダラーは正確なブロックの測定とページ分割を実行する必要があるため、MDX 内の JSX タグは最上位のブロック要素である必要があり、インライン (inline) での JSX 宣言の混在は固く禁じられています。
サポートされている記述方法
<TableCaption>Daily ridership</TableCaption>
| Day | Riders |
| --- | --- |
| Mon | 1,204 |
拒否される記述方法 (コンパイルエラーがスローされます)
これは <Highlight>インラインタグ</Highlight> を含むテキストです。
依存関係とシステム統合
ソース登録により、以下のシステム機能が直接ロック解除されます:
- 動的レンダリング:
<MdxArea>はchainIdを利用してこのソースとインターフェースを取ります。 - 自動ページ分割:
<Sections>と<Toc>はソースの目次階層の反復処理に依存してタスクを実行します。 - グローバル操作:CLI の
searchとreplaceはmdxSourceで登録されたファイルセットにのみ作用します。 - マークアップシステム:Workbench の
source-editエンドポイントと@openpress-commentマークアップライターは、ソースマッピングテーブルに基づいてファイルの変更位置をロックします。
コンポーネント (components/)、メディア (media/)、およびテーマ (theme/) などのリソースディレクトリはページ分割レンダリングメカニズムに関与しないため、sources の登録範囲には含まれず、代わりに <Press> の他のプロパティや規則によって処理されます。