.zshrc
にstatic_httpd
って関数つくってる。
dotfiles/.zshrc at master · kamipo/dotfiles · GitHub
function static_httpd {
if type plackup > /dev/null; then
plackup -MPlack::App::Directory -e 'Plack::App::Directory->new(root => ".")->to_app'
elif type ruby > /dev/null; then
if ruby -v | grep -qm1 'ruby 2\.'; then
ruby -run -e httpd -- --port=5000 .
else
ruby -rwebrick -e 'WEBrick::HTTPServer.new(:Port => 5000, :DocumentRoot => ".").start'
fi
elif type python > /dev/null; then
if python -V 2>&1 | grep -qm1 'Python 3\.'; then
python -m http.server 5000
else
python -m SimpleHTTPServer 5000
fi
elif type node > /dev/null; then
node -e "var c=require('connect'), d=process.env.PWD; c().use(c.logger()).use(c.static(d)).use(c.directory(d)).listen(5000);"
elif type php > /dev/null && php -v | grep -qm1 'PHP 5\.[45]\.'; then
php -S 0.0.0.0:5000
elif type erl > /dev/null; then
erl -eval 'inets:start(), inets:start(httpd, [{server_name, "httpd"}, {server_root, "."}, {document_root, "."}, {port, 5000}])'
fi
}
むかしはplackup
だけ書いてたんだけど、あんまりPerlつかってなかった時期にPlack入れてるかどうか自信ないとすぐにHTTPD上げれないから、そのときにとりあえずHTTPD上げれそうなやつ調べて全部書いておいた。
この中だとRubyとPythonが標準モジュールだけでディレクトリインデックス表示できる。
追記
Python3ではSimpleHTTPServer
がなくなってhttp.server
になっているそうなので、python2かpython3かを.zshrc
に追加しておきました!
if python -V 2>&1 | grep -qm1 'Python 3\.'; then
python -m http.server 5000
else
python -m SimpleHTTPServer 5000
fi
追記おわり。
Perlはディレクトリインデックス表示だとPlackとPlack::App::Directory入れてないといけないけど、Perlは標準モジュールが貧弱なんでPerlでWeb開発してる人は必ず入れてるからまあよしとします。
PHPは5.4以降のbuilt-in web serverが使えるけどディレクトリインデックスは表示できなかった。
あとNodeも試したんだけど、まずconnect
入れないとワンライナーじゃ無理そうなのと、カレントディレクトリをドキュメントルートにできなくてサブディレクトリにしないといけなかったので含めなかった。こんな感じ。
node -e "var connect=require('connect'); connect().use(connect.static('public')).use(connect.logger()).listen(5000);"
追記
@にprocess.env.PWD
でフルパス指定すればいけることを教えてもらいました!__dirname
は試したんだけどワンライナーだと'.'
になってダメで諦めてた…。ディレクトリインデックスがかっこよかった。
node -e "var c=require('connect'), d=process.env.PWD; c().use(c.logger()).use(c.static(d)).use(c.directory(d)).listen(5000);"
追記おわり。
あとErlangはちょっとやってみたかっただけのオマケです。