コンテンツへスキップ
Fumadocs

ワークスペース

複数のワークスペースで Fumadocs MDX を使用します。

概要

Fumadocs MDX における ワークスペース (Workspace) とは、独自の設定とコンテンツを持つ独立したプロジェクトのことです。

index.mdx
test.mdx
source.config.ts
welcome.mdx
source.config.ts

補足

Fumadocs MDX のワークスペースは、パッケージマネージャーでいう従来のワークスペースに限定されません。

独自の package.json は不要で、設定ファイルさえあれば十分です。

ワークスペースを定義するには、次の設定を追加します。

source.config.ts
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}/* からアクセスできます。例:

lib/source.ts
import { docs } from 'collections/my-workspace/server';

ルートワークスペースの出力先は変わりません。

Fumadocsでマルチソースを統合するには、次のようにします。

lib/source.ts
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 設定に統合し、各ワークスペースのすべてのコレクションにアクセスできます。

これは、コンテンツを複数のリポジトリに分けて管理するようなユースケースで特に重要です。簡略化した構成例は次のとおりです。

  • メインのドキュメントリポジトリを AA、その他のリポジトリを T_n とします
  • 各リポジトリ T_n について:
    • T_n は AA を git サブモジュールとして含みます。
    • T_n は独自の設定ファイル source.config.ts を定義し、単独で動作します。
    • T_n のコンテンツにコミットされると、GitHub Actions (または CI) がトリガーされ、AA で新しいデプロイが作成されます。
  • AA でデプロイがトリガーされると:
    • Fumadocs MDX は各 T_n をワークスペースとして扱います。
    • 各ワークスペースは、collections/{repo}/server のように独自のコレクションエントリを生成します。
    • Fumadocs の loader() が複数のソースを 1 つに統合します。

How is this guide?

最終更新日