node-web-server

Node.js Web Server

node-web-server

PC 上で簡単に導入できる簡易的な静的ファイル用 Web サーバです。

※ 本番環境で動作させることは考慮されていません。

$ npm install -g node-web-server
$ nws -h
node-web-server command line interface
 
Usage: nws [options]
 
Options:
  -h             print this help
  -v             print node-web-server's version
  -d [http.conf] copy default config file
  -c [http.conf] load config file & run server
  host:port      run server at host:port
nws.run(settings(string or object), [current_directory]);

settings は設定ファイルのパスまたは設定を直接objectで指定します。 current_directory を指定すると、そのディレクトリを基準にした相対パスでドキュメントルート とログファイルの保存先が設定されます。

example.js

var nws = require('node-web-server');
// 起動 (__dirname を current directory として localhost:8080 で起動) 
  nws.run({
    host: "localhost",
    port: 8080,
    docRoot: "www"
  }, __dirname);
// 10秒後に停止 
setTimeout(nws.stop, 10000);

/lib/http.conf

{
  "host"       :  or IP or  (process.env.*),
  "port"       :  or  (process.env.*),
  "docRoot"    :  (),
  "defFile"    : [
    
  ],
  "accessLog"  : HTTP  () or false,
  "errorLog"   :  () or false,
  "httpHeaders": {
    HTTP
  },
  "allowUnknownMIMEType": MIMEType  application/octet-stream  true or false,
  "MIME"      : {
    MIME
  }
}

ex. Cloud Foundry

{
  "host"      : "0.0.0.0",
  "port"      : "process.env.VCAP_APP_PORT || 3000",
  <The rest is omitted>

ex. Heroku

{
  "host"      : "0.0.0.0",
  "port"      : "process.env.PORT || 3000",
  <The rest is omitted>

'||' 演算子を使うことができます。 You can use '||' operator.

ログは下記のように記録されます (アクセスログの例)

{ "date":"Fri, Sep 30 2011 20:26:11 GMT-0900", "method":"GET", "url":"/", "statusCode":200 } ,{ "date":"Fri, Sep 30 2011 20:26:11 GMT-0900", "method":"GET", "url":"style.css", "statusCode":200 }

これを [] で囲むことで、JavaScriptの配列として読み込むことが出来ます。

var obj = JSON.parse("[" + log + "]");

npm test
mocha -r blanket -R html-cov > coverage.html
istanbul cover ./node_modules/mocha/bin/_mocha
  • Node.js v0.12 対応
  • io.js 対応
  • v0.6 対応切り捨て
  • デフォルトで access.log を出力しないようになりました。
  • テストを追加しました。
  • allowUnknownMIMEType オプションを追加しました。
  • README の間違いを訂正しました。
  • 相対パスの扱いを修正しました。
  • node v0.8 に対応しました。
  • 改行コードを CRLF から LF に変更しました。
  • Linux で nws コマンドが使えない問題を解決しました。
  • モジュール化し、他のアプリに組み込めるようにしました。
  • #4 コマンドラインからの実行も可能。
  • fix #3 URL 周りのバグを修正しました。
  • Date Format の間違いを修正しました。
  • fix #1 URL の扱いを改善しました。
  • access.log が生成されないバグを改善しました。
  • Settings File でホスティングサービスの環境変数 (process.env.*) に対応。
  • Date format (RFC1123) の修正。
  • デフォルトインデックス (defFile) 部分の修正。
  • ロギング部分の修正。
  • エラーメッセージにドキュメントルートのフルパスが表示される脆弱性を修正。
  • bugfix
  • Release