Browse Source

added --refreshRate option, fixed --directory default value issue, dropped 2 deps

master
Lloyd Brookes 11 years ago
parent
commit
373c4e3d5e
  1. 35
      bin/ws.js
  2. 4
      package.json

35
bin/ws.js

@ -5,7 +5,6 @@ var dope = require("console-dope"),
http = require("http"), http = require("http"),
cliArgs = require("command-line-args"), cliArgs = require("command-line-args"),
o = require("object-tools"), o = require("object-tools"),
s = require("string-tools"),
path = require("path"), path = require("path"),
loadConfig = require("config-master"), loadConfig = require("config-master"),
morgan = require("morgan"), morgan = require("morgan"),
@ -13,7 +12,6 @@ var dope = require("console-dope"),
directory = require("serve-index"), directory = require("serve-index"),
compress = require("compression"), compress = require("compression"),
homePath = require("home-path"), homePath = require("home-path"),
byteSize = require("byte-size"),
logStats = require("stream-log-stats"); logStats = require("stream-log-stats");
var usage = var usage =
@ -28,10 +26,10 @@ function halt(message){
process.exit(1); process.exit(1);
} }
/* Merge together options from
/* Load and merge together options from
- ~/.local-web-server.json - ~/.local-web-server.json
- {cwd}/.local-web-server.json - {cwd}/.local-web-server.json
- {cwd}/package.json
- the `local-web-server` property of {cwd}/package.json
*/ */
var storedConfig = loadConfig( var storedConfig = loadConfig(
path.join(homePath(), ".local-web-server.json"), path.join(homePath(), ".local-web-server.json"),
@ -39,20 +37,27 @@ var storedConfig = loadConfig(
{ jsonPath: path.join(process.cwd(), "package.json"), configProperty: "local-web-server" } { jsonPath: path.join(process.cwd(), "package.json"), configProperty: "local-web-server" }
); );
/* override stored config with values parsed from command line */
/* parse command line args */
try { try {
var argv = cliArgs([ var argv = cliArgs([
{ name: "port", alias: "p", type: Number, defaultOption: true }, { name: "port", alias: "p", type: Number, defaultOption: true },
{ name: "log-format", alias: "f", type: String }, { name: "log-format", alias: "f", type: String },
{ name: "help", alias: "h", type: Boolean }, { name: "help", alias: "h", type: Boolean },
{ name: "directory", alias: "d", type: String, value: process.cwd() },
{ name: "directory", alias: "d", type: String },
{ name: "config", type: Boolean }, { name: "config", type: Boolean },
{ name: "compress", alias: "c", type: Boolean }
{ name: "compress", alias: "c", type: Boolean },
{ name: "refreshRate", alias: "r", type: Number }
]).parse(); ]).parse();
} catch(err){ } catch(err){
halt(err.message); halt(err.message);
} }
argv = o.extend({ port: 8000 }, storedConfig, argv);
/* override built-in defaults with stored config then command line args */
argv = o.extend({
port: 8000,
directory: process.cwd(),
refreshRate: 500
}, storedConfig, argv);
if (argv.config){ if (argv.config){
dope.log("Stored config: "); dope.log("Stored config: ");
@ -63,12 +68,6 @@ if (argv.config){
dope.log(usage); dope.log(usage);
} else { } else {
var total = {
req: 0,
bytes: 0,
connections: 0
};
process.on("SIGINT", function(){ process.on("SIGINT", function(){
dope.showCursor(); dope.showCursor();
dope.log(); dope.log();
@ -88,13 +87,13 @@ if (argv.config){
}); });
argv["log-format"] = "default"; argv["log-format"] = "default";
} }
app.use(morgan(argv["log-format"])); app.use(morgan(argv["log-format"]));
/* if no specific `--log-format` required, pipe the default web log output /* if no specific `--log-format` required, pipe the default web log output
into `log-stats`, which prints statistics to the console */ into `log-stats`, which prints statistics to the console */
} else { } else {
app.use(morgan({ stream: logStats() }));
app.use(morgan({ stream: logStats({ refreshRate: argv.refreshRate }) }));
} }
/* --compress enables compression */ /* --compress enables compression */
@ -105,7 +104,7 @@ if (argv.config){
.use(directory(path.resolve(argv.directory), { icons: true })); .use(directory(path.resolve(argv.directory), { icons: true }));
/* launch server */ /* launch server */
var server = http.createServer(app)
http.createServer(app)
.on("error", function(err){ .on("error", function(err){
if (err.code === "EADDRINUSE"){ if (err.code === "EADDRINUSE"){
halt("port " + argv.port + " is already is use"); halt("port " + argv.port + " is already is use");

4
package.json

@ -14,7 +14,6 @@
"repository": "https://github.com/75lb/local-web-server", "repository": "https://github.com/75lb/local-web-server",
"author": "Lloyd Brookes", "author": "Lloyd Brookes",
"dependencies": { "dependencies": {
"byte-size": "^0.1.0",
"command-line-args": "^0.2.0", "command-line-args": "^0.2.0",
"compression": "^1.0.2", "compression": "^1.0.2",
"config-master": "~0.2.0", "config-master": "~0.2.0",
@ -25,7 +24,6 @@
"object-tools": "^1.0.3", "object-tools": "^1.0.3",
"serve-index": "^1.0.2", "serve-index": "^1.0.2",
"serve-static": "^1.2.2", "serve-static": "^1.2.2",
"stream-log-stats": "^0.1.0",
"string-tools": "^0.1.4"
"stream-log-stats": "^0.1.0"
} }
} }
Loading…
Cancel
Save