ワークスペース
複数のワークスペースで Fumadocs MDX を使用します。
概要
Fumadocs MDX における ワークスペース (Workspace) とは、独自の設定とコンテンツを持つ独立したプロジェクトのことです。
index.mdx
test.mdx
source.config.ts
welcome.mdx
source.config.ts
補足
Fumadocs MDX のワークスペースは、パッケージマネージャーでいう従来のワークスペースに限定されません。
独自の package.json は不要で、設定ファイルさえあれば十分です。
ワークスペースを定義するには、次の設定を追加します。
import { defineConfig } from 'fumadocs-mdx/config';
export default defineConfig({
workspaces: {
'my-workspace': {
dir: 'my-workspace',
config: await import('./my-workspace/source.config.ts'),
},
},
});ワークスペース内でコンテンツを記述する際は、次の点に注意してください。
cwdは現在のワークスペースのディレクトリを指します。- 設定は継承されません。ワークスペースは常に互いに独立しています。
開発サーバーを起動するかビルドを実行すると、すべてのワークスペースのコレクションエントリが生成されます。
コレクションへのアクセス
ワークスペースで生成されたファイルには、.source/{workspace}/* からアクセスできます。例:
import { docs } from 'collections/my-workspace/server';ルートワークスペースの出力先は変わりません。
Fumadocsでマルチソースを統合するには、次のようにします。
import { loader } from 'fumadocs-core/source';
import { docs } from 'collections/server';
import * as MyWorkspace from 'collections/my-workspace/server';
export const source = loader(
{
root: docs.toFumadocsSource(),
'my-workspace': MyWorkspace.docs.toFumadocsSource(),
},
{
baseUrl: '/docs',
},
);使用するタイミング
構成によっては、それぞれ独自のコンテンツディレクトリを持つ Fumadocs MDX の設定が複数存在する場合があります。
ワークスペースを使用すると、それらを 1 つの Fumadocs MDX 設定に統合し、各ワークスペースのすべてのコレクションにアクセスできます。
これは、コンテンツを複数のリポジトリに分けて管理するようなユースケースで特に重要です。簡略化した構成例は次のとおりです。
- メインのドキュメントリポジトリを 、その他のリポジトリを T_n とします
- 各リポジトリ T_n について:
- T_n は を git サブモジュールとして含みます。
- T_n は独自の設定ファイル
source.config.tsを定義し、単独で動作します。 - T_n のコンテンツにコミットされると、GitHub Actions (または CI) がトリガーされ、 で新しいデプロイが作成されます。
- でデプロイがトリガーされると:
- Fumadocs MDX は各 T_n をワークスペースとして扱います。
- 各ワークスペースは、
collections/{repo}/serverのように独自のコレクションエントリを生成します。 - Fumadocs の
loader()が複数のソースを 1 つに統合します。
How is this guide?
最終更新日
