Transclude
:::include{file="…"} または ![[path]] で別ファイルの内容を埋め込みます。zudo-doc では無効(transclude レンダラー未配線)。
transclude 機能は、別ファイルの内容を Markdown ドキュメントに埋め込みます。インクルードされたファイルは Markdown として解析され、その AST がパイプラインの残りが実行される前にマージされます。
zudo-doc では無効 — transclude レンダラー未配線
transclude は zudo-doc の zfb.config.ts から省略され無効化されています。根本的な理由は、transclude レンダラーがまだ配線されていないことです。ディレクティブを出力に変換する <include> コンポーネントが登録されていません。その結果、:::include{file="…"} ディレクティブは SSR レンダリングが 500 を返し、![[path]] ウィキリンク形式は zfb 0.1.0-next.13 で no-op になります(リテラルテキスト ![[path]] として描画されます)。以下の構文はフェンスコードブロック内にのみ記載されており、このページでライブの :::include ディレクティブは記述していません。zfb.config.ts の 1 行コメントが、transclude レンダラーが配線され次第の再有効化を示しています。
設定
レンダラーが配線されたら、デフォルトで有効化します。オブジェクト型の機能であるため、オプションオブジェクトを渡す必要があります。
export default defineConfig({
markdown: {
features: {
transclude: {},
},
},
});インクルードチェーンの最大深度を調整する場合:
transclude: { maxDepth: 5 },ディレクティブ構文
基本的なインクルード — パスは現在のソースファイルからの相対で解決されます。
:::include{file="./snippets/intro.md"}ファイルをフェンスコードブロックとしてインクルードする場合:
:::include{file="./examples/hello.rs" code=true lang="rust"}行範囲をスライスする場合(1 始まり、両端を含む):
:::include{file="./src/lib.rs" code=true lang="rust" lines="10-30"}ウィキリンク形式
![[path]] ウィキリンクは代替のインクルード構文です。
![[snippets/intro.md]]next.13 ではこの形式は no-op で、リテラルテキストとして描画されます。
オプション
| オプション | デフォルト | 説明 |
|---|---|---|
maxDepth | 5 | インクルードチェーンの最大深度。インクルードされたファイル自身も、この深度まで :::include ディレクティブを含めることができます。 |
意図された機能
チェーン: インクルードされたファイルは、
maxDepthまでさらに:::includeディレクティブを含めることができます。循環検出: ファイルが相互にインクルードし合うことによる無限ループを防止します。
パス制限: 相対パスのみ許可され、プロジェクトルート外への走査は拒否されます。
空行要件: ディレクティブはブロックレベルのコンテンツとして認識されるために、上下に空行が必要です。