昔ながらのhtml納品時の品質チェック(404チェック)
2019年12月2日
皆さんこんにちは、末ちゃんです。
いよいよ氷点下になりましたね!
山や森が白く雪化粧し、心が洗われる季節がやってきました!
寒いのは嫌いですが、白銀の世界は大好きです。
404エラーチェック
さて、皆さんデータ納品時の404エラーチェックはどうやっていますか?
Gatsby.jsなどの静的サイトジェネレータや、Nuxt.jsなどのSSR可能なフレームワークを使用している場合は悩むことはありません。
ルーターが常に対象のファイルの生存をチェックしてくれるため、うっかり画像を入れ忘れてしまったり、リンクを誤ることはありません。
しかし、昔ながらのHTMLを直書きして納品しなければいけない場合、上記のような便利なルーターがないためにリンクミスを多発しやすくなります。
でも安心してください、静的なHTMLを再帰的にリンクチェックしてくれるライブラリがあります。
broken-link-checker を使ってみる
早速broken-link-checkrを使っていきます。
npm パッケージなので、まずは npm プロジェクトを立ち上げましょう。
適当にプロジェクトフォルダを作成し公開データをプロジェクトフォルダ内にしまいます。
mkdir test && $_ mkdir dist mv ~/hogehoge/DATA/* ./dist/
次にnpm プロジェクトを初期化します。
yarn init -y
いよいよbroken-link-checkerをインストールします。
yarn add -D broken-link-checker
ちなみに、broken-link-checkerには対象を絶対URLで指定しないといけないため、今回は開発用のWebサーバーを組み込みます。
yarn add -D http-server
これで準備は調いました!
{ "name": "test", "version": "1.0.0", "main": "index.js", "license": "MIT", "devDependencies": { "broken-link-checker": "^0.7.8", "http-server": "^0.12.0" } }
├── dist │ ├── index.html │ └── page-2.html ├── package.json └── yarn.lock
検証用データ
今回の検証用データは、index.htmlとpage-2.htmlです。
<h1>TOP PAGE</h1> <a href="./page-2.html">Go to Page 2</a>
<h1>page-2</h1> <a href="./index.html">Go back to Top Page</a>
テスト実行
まずは簡易Webサーバーを立ち上げます。
http-server dist/
http-serverは実行したまま、チェッカーを実行します。-ro は再帰的に走査するためのオプションです。
broken-link-checker http://localhost:8080/dist/ -ro
これの実行結果は
Getting links from: http://localhost:8080/ └───OK─── http://localhost:8080/page-2.html Finished! 1 links found. 0 broken. Getting links from: http://localhost:8080/page-2.html └───OK─── http://localhost:8080/index.html Finished! 1 links found. 0 broken. Getting links from: http://localhost:8080/index.html Finished! 1 links found. 1 excluded. 0 broken. Finished! 3 links found. 1 excluded. 0 broken. Elapsed time: 0 seconds
broken が0でした!つまり、すべてのリンクは正常に動作しています。
試しに、わざとpage-2.htmlのトップへのリンクをhogehoge.htmlに変更して実行してみます。
Getting links from: http://localhost:8080/ └───OK─── http://localhost:8080/page-2.html Finished! 1 links found. 0 broken. Getting links from: http://localhost:8080/page-2.html └─BROKEN─ http://localhost:8080/hogehoge.html (HTTP_404) Finished! 1 links found. 1 broken. Finished! 2 links found. 1 broken. Elapsed time: 0 seconds
しっかり1 broken. でかえってきました!
もう一つ試しに外部リンクを試してみます。page-2.htmlのトップへのリンクを https://hogehogefugafuga.com/ にしてみます。
Getting links from: http://localhost:8080/ └───OK─── http://localhost:8080/page-2.html Finished! 1 links found. 0 broken. Getting links from: http://localhost:8080/page-2.html └─BROKEN─ https://hogehogefugafuga.com/ (ERRNO_ENOTFOUND) Finished! 1 links found. 1 broken. Finished! 2 links found. 1 broken. Elapsed time: 1 second
これもしっかり1 broken. でかえってきました!
その他豊富なオプションあり
broken-link-checker にはその他にも豊富なオプションがあります。
除外フォルダ・ファイルの指定、内部リンクの除外、外部リンクの除外や、cssやjsファイルへのリンクチェックも含めて多数オプションがあり、
broken-link-checker -h
でヘルプドキュメントから、すべてのオプションが確認できます。
まとめ
昨今はHTMLを直書きすることは滅多にないこととなりましたが、古いプロジェクトの保守等ではどうしても直接HTMLを触ることになります。
しかし、リンクチェックなど手作業でやるのは現実的ではないし、コーディング時にどんなに気をつけていてもミスしてしまうものです。
是非このようなツールでしっかりチェックし、品質を担保していきましょう。
それではまたお会いしましょう。