watch モード
--watch フラグを付けると、contextlint は初回の lint を実行したあと、ワーキングディレクトリ内の .md ファイルの変更を監視し続けます。エディタを開きながら違反をリアルタイムに確認したいときに使います。
# include パターンに従って watchnpx contextlint --watch
# 特定の glob を watchnpx contextlint --watch "docs/**/*.md"
# 設定ファイルを明示npx contextlint --watch --config contextlint.config.jsonCtrl+C で終了します。
watch モードの基本的な流れは次のとおりです。
- 起動時にターミナルをクリアし、初回の完全な lint を実行
- ワーキングディレクトリ配下の
.mdファイル変更を監視 - 変更を検知したら、マッチするすべてのファイルを再 lint
- ターミナルをクリアし、タイムスタンプ付きで最新結果を表示
連続する変更は 300 ミリ秒のデバウンス がかかります。短時間に複数のファイルを保存しても、最後の変更から 300ms 後に 1 度だけ再 lint が走ります。
なぜ全ファイルを再 lint するのか
Section titled “なぜ全ファイルを再 lint するのか”変更があったファイルだけを lint しても、REF-002(ID 参照の整合性)や TBL-006(ファイル間の ID 一意性)のような クロスファイルルール には不十分です。1 ファイルの変更が他ファイルの違反を生む / 解消することがあるため、対象セット全体に対して再実行します。
| 場面 | 推奨 |
|---|---|
| エディタで Markdown を編集中 | エディタが LSP に対応していれば Editors (LSP) の方が即時性が高い |
| LSP 非対応のエディタを使っている | watch モードがフォールバック手段として有効 |
| AI に大量のドキュメントを生成させて結果を確認したい | watch を有効にしておくと、AI の出力直後に自動で再 lint される |
| CI 環境 | watch は使わない。1 回限りの実行(exit code)で結果を判定する |
ターミナル出力
Section titled “ターミナル出力”変更検知時のヘッダーに、タイムスタンプと変更ファイル名が表示されます。
[14:32:15] File changed: docs/requirements.md
docs/requirements.md line 12 error Required column "Status" not found in table TBL-001
1 error in 1 fileswatch モードでは常に human 形式で表示されます(--format json との併用は想定していません)。