還記得 IO::All 的 A Tiny Web Server 嗎:

perl -MIO::All -e 'io(":8080")->fork->accept->(sub { $_[0] < io(-x $1 ? "./$1 |" : $1) if /^GET \/(.*) / })'

以前在寫一些前端 Javascript / HTML / CSS 程式時,都是先把本機的 httpd (Apache 或 Nginx) 的某個 VirtualHost 的 DocumentRoot 設到家目錄中的某個子目錄,然後在那裡測,以 Mac 來說就是 ~/Sites 這個目錄。這樣雖然快又方便,但專案變多時,切換來去倒是頂麻煩的。特別是現在寫個前端介面都還要測 iPhone / iPad,亂設的本機 hostname 就破功了。(果然是無處不比 127.0.0.1 啊。)

為了方便,我利用 Plack 內建的 Plack::App::Directory 來即席開設網頁伺服器:

plackup -MPlack::App::Directory -e 'Plack::App::Directory->new(root => ".")->to_app;'

簡單包裝成了 httpd-here 這個執行檔。

於是,在需要測試時:

> cd ~/src/project-foo
> httpd-here
Twiggy: Accepting connections at http://0.0.0.0:5000/

由於有提供自動產生的索引頁,這麼一來所有裝置就可以用這個臨時的網址來進行測試了。完畢之後,按 Ctrl-C 中斷便行,不用替新專案寫任何設定,十分的便利。