markdownのリンクチェック

wordpressにはBroken Link Checkerというプラグインがあって、デッドリンクをチェックできます。

同じようなツールがmarkdownでもできまして、リンクチェックをCIで回すことができます。

とはいうものの、CIに組み込んでエラーが出るのを待つのは面倒です。というわけで、手っ取り早くローカル環境で手っ取り早くmarkdownのリンクチェックをする手順です。

使うのは

GitHubで公開されている以下のツールを使います。このツールはCIにも導入できますし、ローカル環境でも使うことができます。

tcort/markdown-link-check: checks that all of the hyperlinks in a markdown text to determine if they are alive or dead

インストール

あるリポジトリの配下で使いたかったので、以下でインストールします。

npm install –save-dev markdown-link-check

そうすると、node_modulesというディレクトリが作成されて、その下に関連するパッケージがインストールされます。さらにmarkdown-link-checkを探すと、バイナリが用意されています。

使用方法

複数のmarkdownをチェックしたくて、以下のコマンドで使用しました。

find . -name *.md -print0 | xargs -0 -n1 node_modules/markdown-link-check/markdown-link-check -c config.json -q

オプションにある-cはjson形式の設定ファイルを読み込みます。

また、-qでリンクエラーのみ出力させています。

使用しているconfig.jsonの中身は以下の通りです。無視するURLを列挙しています。

{
  "ignorePatterns": [
    {
    "pattern": "^https://blog.hatena.ne.jp/"
    },
    {
      "pattern": "^https://c.affitch.com/"
      },
    {
    "pattern": "^https://d.odsyms15.com/"
    }
    
  ],
  "timeout": "20s",
  "retryOn429": true,
  "retryCount": 5,
  "fallbackRetryDelay": "30s",
  "aliveStatusCodes": [200, 206]
  }