zudo-doc
GitHub リポジトリ

検索したい単語を入力

いつでも検索バーを開ける

リンクチェッカー

作成 2026年3月26日更新 2026年6月7日Takeshi Takatsudo

ビルド後の内部リンクを検証するリンクチェッカー。ビルド済みHTMLとMDXソースファイルを対象にします。

リンクチェッカー

zudo-docには、サイトビルド後に2種類の検証を行う組み込みリンクチェッカー(scripts/check-links.js)が含まれています。

チェック内容

モード1: ビルド済みHTMLスキャン

dist/内のすべての.htmlファイルをスキャンし、内部<a href="...">リンクの各ターゲットがディスク上に存在するかを検証します。以下を処理します:

  • ベースパスの除去(例:/my-docs/docs/foodocs/foo

  • 末尾スラッシュの解決(docs/foo/docs/foo/index.html

  • 拡張子の解決(docs/foodocs/foo/index.htmlまたはdocs/foo.html

  • 解決前のクエリ文字列とフラグメントの除去

  • ファイルのディレクトリに対する相対リンクの解決

  • パフォーマンスのための解決済みパスのキャッシュ

スキップされるリンク(チェック対象外):

  • 外部URL(https://http://

  • アンカーのみのリンク(#section

  • mailto:javascript:data:tel: URI

  • バージョン付きドキュメントリンク(/v/*/) — バージョンコンテンツが不完全な場合があるため

モード2: MDXソーススキャン

設定されたコンテンツディレクトリ内のすべての.mdxおよび.mdファイルをスキャンし、ベースパスをバイパスする絶対リンクを検出します。以下のようなリンクが対象です:

<!-- これらはフラグされます — ベースパスをバイパスしています -->
[guide](/docs/guides/foo)
<a href="/ja/docs/guides/foo">link</a>

<!-- これらは問題ありません — 相対パスを使用しています -->
[guide](./foo.mdx)
[guide](../other/bar.mdx)

ベースパスが設定されている場合(例:/my-docs/)、/docs//ja/docs/で始まる絶対リンクはベースパスのプレフィックスが欠けているため壊れます。MDXソーススキャンは、これらが本番環境で壊れたリンクになる前に検出します。

フェンスドコードブロック内のリンクは無視されます。

リンクチェッカーの実行

単独実行

まずサイトをビルドし、チェッカーを実行します:

pnpm build && pnpm check:links

--strictフラグ

デフォルトでは、問題が見つかってもチェッカーは終了コード0で終了します(非strictモード)。問題発見時に失敗させるには--strictを使用します:

pnpm check:links --strict

b4pushの一部として

リンクチェッカーはプッシュ前検証(pnpm b4push)の13ステップ中ステップ10で実行されます:

  1. フォーマットチェック(mdx)

  2. テンプレートドリフトチェック

  3. ピンパリティチェック

  4. フィクスチャ設定ドリフトチェック

  5. タグ監査(--ci)

  6. デザイントークンリント

  7. 型チェック

  8. ルートユニットテスト

  9. ビルド

  10. リンクチェック

  11. HTML検証

  12. 自動プレビュースモーク(ブロッキング)

  13. 手動インタラクティブスモーク(オペレーター操作)

b4pushのステップ一覧の正式・権威的な定義はscripts/run-b4push.shの冒頭コメントにあります。このスクリプトを唯一の信頼できる情報源として扱ってください。上記の一覧は要約であり、食い違いが生じた場合はスクリプトが優先されます。

CI内での実行

リンクチェッカーはPRチェックワークフロー(pr-checks.yml)のbuild-siteジョブで、pnpm buildの直後に実行されます。

出力

問題がない場合:

Checking links (base: /my-docs/)...

✓ No broken links or absolute path issues found

問題がある場合:

Checking links (base: /my-docs/)...

=== Broken Links in Built HTML ===
  dist/docs/page/index.html:42  /my-docs/docs/missing-page

=== Absolute Links Bypassing Base Path (MDX Source) ===
  src/content/docs/guides/test.mdx:15  /docs/guides/foo

✗ Found 1 broken link and 1 absolute path warning

各エントリはファイルパス、行番号、問題のあるhrefを表示します。

設定

リンクチェッカーはsrc/config/settings.tsから設定を読み取ります:

  • base — サイトのベースパス。リンク解決時のプレフィックス除去に使用

  • docsDir — MDXソーススキャンのプライマリコンテンツディレクトリ

  • locales — ロケール設定。dirフィールドでMDXソーススキャンの追加コンテンツディレクトリを指定(例:locales: { ja: { dir: "src/content/docs-ja" } }

Revision History

Takeshi Takatsudo作成: 2026-03-26T23:19:35+09:00更新: 2026-06-07T17:11:47+09:00

AI Assistant

Ask a question about the documentation.