リンクチェッカー
ビルド後の内部リンクを検証するリンクチェッカー。ビルド済みHTMLとMDXソースファイルを対象にします。
リンクチェッカー
zudo-docには、サイトビルド後に2種類の検証を行う組み込みリンクチェッカー(scripts/)が含まれています。
チェック内容
モード1: ビルド済みHTMLスキャン
dist/内のすべての.htmlファイルをスキャンし、内部<a href="...">リンクの各ターゲットがディスク上に存在するかを検証します。以下を処理します:
ベースパスの除去(例:
/→my- docs/ docs/ foo docs/foo)末尾スラッシュの解決(
docs/foo/→docs/)foo/ index. html 拡張子の解決(
docs/foo→docs/または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)ベースパスが設定されている場合(例:/)、/や/で始まる絶対リンクはベースパスのプレフィックスが欠けているため壊れます。MDXソーススキャンは、これらが本番環境で壊れたリンクになる前に検出します。
フェンスドコードブロック内のリンクは無視されます。
リンクチェッカーの実行
単独実行
まずサイトをビルドし、チェッカーを実行します:
pnpm build && pnpm check:links--strictフラグ
デフォルトでは、問題が見つかってもチェッカーは終了コード0で終了します(非strictモード)。問題発見時に失敗させるには--strictを使用します:
pnpm check:links --strictb4pushの一部として
リンクチェッカーはプッシュ前検証(pnpm b4push)の13ステップ中ステップ10で実行されます:
フォーマットチェック(mdx)
テンプレートドリフトチェック
ピンパリティチェック
フィクスチャ設定ドリフトチェック
タグ監査(--ci)
デザイントークンリント
型チェック
ルートユニットテスト
ビルド
リンクチェック
HTML検証
自動プレビュースモーク(ブロッキング)
手動インタラクティブスモーク(オペレーター操作)
b4pushのステップ一覧の正式・権威的な定義はscripts/の冒頭コメントにあります。このスクリプトを唯一の信頼できる情報源として扱ってください。上記の一覧は要約であり、食い違いが生じた場合はスクリプトが優先されます。
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/から設定を読み取ります:
base— サイトのベースパス。リンク解決時のプレフィックス除去に使用docsDir— MDXソーススキャンのプライマリコンテンツディレクトリlocales— ロケール設定。dirフィールドでMDXソーススキャンの追加コンテンツディレクトリを指定(例:locales:){ ja: { dir: "src/ content/ docs- ja" } }