Link Check
VMark は Markdown 内のローカルリンクと画像のターゲットがディスク上に実際に存在するかを検証します。Cmd-Shift-L または ツール → Markdown をチェック を実行すると、Markdown Lint エンジン と並行して動作します。
チェックされるもの
ドキュメント内のすべてのローカルリンクと画像について:
[text](./other.md)—./other.mdファイルが解決可能で存在するか— 画像ファイルが存在するか[text](./other.md#section)— ファイルが存在するか(アンカーチェックはlinkFragmentsルールが処理)
ターゲットが見つからない場合、リンクのテキストには赤い波線が引かれ、Lint バッジ/F2 ナビゲーションにエントリが追加されます。
スキップされるもの
- フラグメントのみのリンク(
#anchor)—linkFragmentsルールが処理し、現在のドキュメントの見出しとマッチさせます - 外部 URL —
http://、https://、ftp://、mailto:、tel:、data:、file: - 無題のドキュメント — 保存されたファイルパスがない場合、相対 URL はどのディレクトリに対しても解決できません
解決の仕組み
Link Check はソースファイルのディレクトリを基準にパスを解決します:
/repo/docs/intro.md 内のリンク | 解決先 |
|---|---|
[a](./other.md) | /repo/docs/other.md |
[a](../shared.md) | /repo/shared.md |
[a](images/logo.png) | /repo/docs/images/logo.png |
[a](/docs/intro.md) | /repo/docs/docs/intro.md(ファイルのディレクトリ内の相対パスとしてルート扱い) |
ファイル検索の前にフラグメントは取り除かれます — [a](./other.md#section) は ./other.md のみをチェックします。
パフォーマンス
- 非同期 — 同期ルールと並列に実行され、結果は準備でき次第マージされます
- 重複排除 — 同じパスが何度リンクされていても、1 回のみチェックされます
- キーストロークではトリガーされない —
fs.existsをキーごとに呼ぶと過負荷になるため、明示的な Lint トリガー時のみ実行 - 運用エラーへの寛容性 —
fs.existsが例外(権限拒否、capability スコープ問題など)をスローした場合、結果はerror(スキップ)であり、missingではありません。誤判定よりサイレントに
診断コード
| コード | 重要度 | トリガー |
|---|---|---|
| M001 | エラー | 画像ファイルが解決済みのローカルパスに見つからない |
| M002 | エラー | リンク先のファイルが解決済みのローカルパスに見つからない |
関連項目
- Markdown Lint — 全ルールリファレンス
- 設定 → Markdown → Lint