node package manager
Stop wasting time. Easily manage code sharing in your team. Create a free org »

node-web-server

node-web-server NPM Version Build Status Coverage Status

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

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

Installation

$ npm install -g node-web-server

Usage

Command line

$ 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

Script

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);

Configuration

/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.

Logging

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

{ "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 + "]");

Testing

npm test

Coverage (blanket)

mocha -r blanket -R html-cov > coverage.html

Coverage (istanbul)

istanbul cover ./node_modules/mocha/bin/_mocha

Changelog

v1.1.4: 2015/03/26

  • Node.js v0.12 対応
  • io.js 対応
  • v0.6 対応切り捨て

v1.1.3: 2014/05/25

  • デフォルトで access.log を出力しないようになりました。
  • テストを追加しました。
  • allowUnknownMIMEType オプションを追加しました。

v1.1.2: 2012/07/15

  • README の間違いを訂正しました。
  • 相対パスの扱いを修正しました。
  • node v0.8 に対応しました。

v1.1.1: 2012/03/27

  • 改行コードを CRLF から LF に変更しました。
  • Linux で nws コマンドが使えない問題を解決しました。

v1.1.0: 2012/03/25

  • モジュール化し、他のアプリに組み込めるようにしました。
  • #4 コマンドラインからの実行も可能。

v1.0.9: 2012/02/07

  • fix #3 URL 周りのバグを修正しました。

v1.0.8: 2012/01/22

  • Date Format の間違いを修正しました。

v1.0.7: 2012/01/15

  • fix #1 URL の扱いを改善しました。
  • access.log が生成されないバグを改善しました。

v1.0.6: 2011/12/19

  • Settings File でホスティングサービスの環境変数 (process.env.*) に対応。

v1.0.5: 2011/11/12

  • Date format (RFC1123) の修正。

v1.0.4: 2011/10/07

  • デフォルトインデックス (defFile) 部分の修正。

v1.0.3: 2011/09/30

  • ロギング部分の修正。

v1.0.2: 2011/09/26

  • エラーメッセージにドキュメントルートのフルパスが表示される脆弱性を修正。

v1.0.1: 2011/09/02

  • bugfix

v1.0.0: 2011/08/11

  • Release