Tinyrack Docs
React Router、MDX、Tinyrack UI で静的かつ検索可能なドキュメントサイトを構築します。
Tinyrack Docs は、MDX と TSX ファイルから、ナビゲーション、検索、言語別ページ、 SEO アセット、Tinyrack UI を備えた静的な React Router ドキュメントサイトを 構築します。このガイドでは、空のプロジェクトから本番ビルドまでを説明します。 Node.js 24 以降が必要です。
1. パッケージをインストールする
React 19 と React Router 8 とともにドキュメントランタイムをインストールして ください。React Router、Tailwind CSS 4、Vite のビルドツールは開発依存関係に 追加します。
pnpm add @tinyrack/docs @tinyrack/ui react react-dom react-router
pnpm add --save-dev @react-router/dev @tailwindcss/vite tailwindcss vite
2. サイトを設定する
プロジェクトルートに docs.config.ts を作成してください。contentDir は
ドキュメントルートを格納するディレクトリを指定します。セクション名とサイトの
メタデータは、ナビゲーションと生成される SEO アセットにも使われます。
import { defineDocsConfig } from '@tinyrack/docs/config';
export default defineDocsConfig({
contentDir: 'app/content',
i18n: {
defaultLocale: 'en',
locales: {
en: { label: 'English', language: 'en', openGraph: 'en_US' },
ko: { label: '한국어', language: 'ko', openGraph: 'ko_KR' },
},
},
redirects: { '/': '/en/' },
sections: [
{ id: 'start', label: { en: 'Start', ko: '시작하기' }, order: 0 },
{ id: 'guides', label: { en: 'Guides', ko: '가이드' }, order: 1 },
],
site: {
basePath: '/',
description: 'Documentation for this project.',
favicon: '/favicon.svg',
locale: { language: 'en', openGraph: 'en_US' },
logo: { dark: '/logo-inverse.svg', light: '/logo.svg' },
title: 'Project Docs',
url: 'https://docs.example.com',
},
theme: { default: 'auto' },
});
theme.default には auto、light、dark を指定できます。auto は OS の
カラースキームに従います。ヘッダーで選択した値は設定した既定値より優先され、
次回のアクセス時にも維持されます。
ロゴとファビコンは public/ に配置してください。ドメインルートではなく /docs
などのサブパスで配信する場合は、site.basePath を変更します。
3. React Router と Vite を接続する
React Router のルート定義とフレームワーク設定を作成してください。両方が同じ Docs 設定を使うため、ルートの検出と静的出力が一致します。
// app/routes.ts
import { createDocsRoutes } from '@tinyrack/docs/react-router';
import config from '../docs.config.js';
export default createDocsRoutes(config);
// react-router.config.ts
import { createDocsRouterConfig } from '@tinyrack/docs/react-router';
import config from './docs.config.js';
export default createDocsRouterConfig(config);
Tinyrack Docs プラグインを Tailwind CSS プラグインより前に登録してください。
// vite.config.ts
import tailwindcss from '@tailwindcss/vite';
import { tinyrackDocs } from '@tinyrack/docs/vite';
import { defineConfig } from 'vite';
import config from './docs.config.js';
export default defineConfig({
plugins: [...tinyrackDocs(config), tailwindcss()],
});
生成されたすべてのルートにドキュメントシェル、メタデータ、Tinyrack テーマを適用 するため、パッケージのルートとスタイルシートを使ってください。
/* app/styles/tinyrack-docs.css */
@import "@tinyrack/docs/styles.css";
// app/root.tsx
import './styles/tinyrack-docs.css';
export { default, Layout, links, meta } from '@tinyrack/docs/runtime';
4. MDX ページを追加する
contentDir 以下のすべての .mdx と .tsx ファイルは、再帰的にルートに
なります。app/content/en/getting-started.mdx を作成すると、ファイル名が
/en/getting-started/ に対応します。ページのタイトルと説明は Tinyrack Docs が
表示するため、本文の見出しはレベル 2 から始めてください。
---
title: "Getting started"
description: "Install and configure the project."
section: start
order: 0
---
## Install
Install the package with your package manager.
order は省略できます。order を指定したページがセクション内で先に並び、残りの
ページはサイドバーラベルのアルファベット順で続きます。
インポートするコンポーネント、例、ヘルパーは contentDir の外に配置してください。
このディレクトリ内の補助ファイルも、別のドキュメントルートとして扱われます。
5. TSX ページを追加する
ルートに独自の React 構成が必要な場合は DocsPage を使ってください。
app/content/en/status.tsx は /en/status/ に対応します。
import { DocsPage } from '@tinyrack/docs/runtime';
export default function StatusPage() {
return (
<DocsPage
frontmatter={{
title: 'Status',
description: 'Review the current service status.',
section: 'guides',
order: 0,
}}
headings={[{ depth: 2, id: 'services', label: 'Services' }]}
>
<h2 id="services">Services</h2>
<p>All systems are operational.</p>
</DocsPage>
);
}
frontmatter と任意の headings は、静的なインラインオブジェクトリテラルで
指定する必要があります。ルート検出時には、変数、スプレッド、計算された値、関数
呼び出し、テンプレート式を読み取れません。宣言したすべての見出し id は、実際に
表示する見出しと一致させてください。
6. サイトを実行してビルドする
package.json に React Router のコマンドを追加してください。
{
"scripts": {
"dev": "react-router dev",
"build": "react-router build",
"preview": "vite preview"
}
}
pnpm dev を実行し、生成された MDX と TSX のルートを開いてください。サイドバーの
リンクとページ内目次がコンテンツに合っていることを確認してから、pnpm build を
実行します。本番ビルドでは、静的ルート、リダイレクト、Pagefind 検索インデックス、
サイトマップ、robots ファイル、ソーシャル画像などの SEO アセットが生成されます。
pnpm preview でビルド結果をローカルで確認できます。
7. ナビゲーションとロケールを調整する
ロケールディレクトリ以下で相対パスが同じファイルは、互いの言語別ページになります。
この設定例では、en/getting-started.mdx と ko/getting-started.mdx が対応します。
英語、韓国語、日本語のインターフェース文言が組み込まれており、必要な場合はロケール
ごとに一部の文言を上書きできます。
標準のサイドバーは、セクションから構成されます。セクション内では order を
指定したページが先に並び、残りはサイドバーラベルのアルファベット順で並びます。
セクション設定で groups を宣言し、ページの frontmatter に group を指定すると、
折りたたみ可能なサブグループにまとめられます。明示的なグループや外部リンクが
必要な場合は、再帰的な navigation 設定を使ってください。
ヘッダーのパスに /{locale} を含めると、内部リンクで現在の言語を維持できます。
MDX では追加設定なしで CommonMark、GFM、コードハイライト、:::caution などの
callout directive を利用できます。
Tinyrack Docs には、プロジェクトジェネレーター、専用 CLI、ランタイム MDX コンパイラー、デプロイサービスは含まれません。デプロイ設定は利用するプロジェクトで 管理し、対象ホストで本番ビルドを確認してください。
ドキュメントサイトではなくプロダクトアプリケーションに Tinyrack UI を追加する場合は、 インストールを参照してください。既存のアプリケーションで信頼できる MDX を表示する場合は、MDX コンポーネントマップを使ってください。