開発者向けのWebサーバー「devd」を紹介します(GitHub)。davidはGoで作られていて、Windows / Linux / Mac OS Xなどで動作します。Goの特徴を活かし単一バイナリとして配布されているので、単にファイルをダウンロードし、所定の場所にコピーするだけで使用することができます。
ライブリロードやリバースプロキシ、バーチャルホスティング、レイテンシー・帯域のシミュレーション機能など、開発者向けの機能が充実しています。
devdの基本
ターミナルから使用します。HTMLを保存してあるフォルダに移動し、以下のコマンドを実行します。"-o"はブラウザをオープンするオプション、"-l"はライブリロードを実行するオプションです。
devd -ol .
カレントディレクトリの「index.html」の内容が、「http://devd.io.8000」として表示されます。
index.htmlを編集すると、ブラウザに表示されている内容が自動的にリロードされ更新されていきます。
リバースプロキシ
単に静的なHTMLファイルを表示するだけでなく、リバースプロキシとして利用することもできます。この場合もライブリロード機能を併用可能で、"-w"で指定したソースコードフォルダの変更が監視対象となります。
例えばRailsアプリと連携したい場合、通常通り「rails s」でWEBrickを立ち上げ、devdを以下のように起動します。
devd -w ./app http://localhost:3000
コントローラーファイルやビューファイルを編集すると、ブラウザが自動でリロードされます。
その他オプション
「devd --help」を実行するとその他のオプションを確認できます。
-A, --address="127.0.0.1" Address to listen on -a, --a Listen on all addresses -c, --cert=PATH Certificate bundle file - enables TLS -d, --down=N Throttle downstream from the client to N kilobytes per second -H, --logheaders Log headers -I, --ignore=REGEX Disable logging matching requests. Regexes are matched over 'host/path' -l, --livereload Enable livereload for static files -n, --latency=N Add N milliseconds of round-trip latency -o, --open Open browser window on startup -p, --port=PORT Port to listen on - if not specified, devd will auto-pick a sensible port -T, --logtime Log timing -u, --up=N Throttle upstream from the client to N kilobytes per second -w, --watch=PATH Watch path to trigger livereload
帯域幅を"-d"(ダウンロード速度)や"-u"(アップロード速度)で制限したり、レイテンシを"-n"で指定することで、接続な不安定な状況でのWebサービスのテストをシミュレートすることもできます。
ルーティングの指定や、リバースプロキシを静的コンテンツと組み合わせて利用したい場合など、さらなる詳細はドキュメントを参照してください。
devdはGoで記述されMITライセンスで配布されています。