Go言語でMarkdown・HTMLのリンクを爆速チェックするコマンド書いた
動機
ReadmeとかドキュメンテーションとかよくMarkdownで書くと思いますが、リンクが切れてないか手作業で点検するのがだるいので自動チェックするコマンド書きました。爆速です(当社比)。
名前はliche。
こんな感じで動きます
機能
<a/>
のhref
と<img/>
のsrc
属性に指定されているURLに対してHTTPリクエストを送りチェックします。相対パスや絶対パスもチェックできますが、絶対パスをチェックするときはドキュメントルートディレクトリの指定が必要です。
他の機能としては、
- 再帰的にディレクトリを廻ってMarkdown・HTMLファイルを探す
- HTTPリクエストの並列度を調整する
- HTTPリクエストのタイムアウトを設定する
- チェックが成功したリンクも表示する
などです。
> liche --help
Link checker for Markdown and HTML
Usage:
liche [-c <num-requests>] [-d <directory>] [-r] [-t <timeout>] [-v] <filenames>...
Options:
-c, --concurrency <num-requests> Set max number of concurrent HTTP requests. [default: 512]
-d, --document-root <directory> Set document root directory for absolute paths.
-r, --recursive Search Markdown and HTML files recursively
-t, --timeout <timeout> Set timeout for HTTP requests in seconds. Disabled by default.
-v, --verbose Be verbose.
実装
- Markdown・HTMLファイルを探す処理
- ファイル内のURLをチェックし結果をまとめる処理
- URLをチェックする処理
の3つの処理をgoroutineで並列に回し、channelでつなげています。これによって上のターミナルキャプチャのようにチェックが終わったファイルの結果がどんどん表示されていきます。
まとめ
Markdown・HTMLファイル内のリンクを爆速チェックするコマンドlicheを書きました。CIとかで走らせるのが手間もかからずよいと思います。
また、ulimit -n
でリミット解除し、--concurrency
をギリギリまで上げるとパソコンをいじめられます。ぜひお試しください。
Author And Source
この問題について(Go言語でMarkdown・HTMLのリンクを爆速チェックするコマンド書いた), 我々は、より多くの情報をここで見つけました https://qiita.com/raviqqe/items/0b8c3ddda118d01e1959著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .