From 867275a29d29c0f273c2059b9788e494abde4991 Mon Sep 17 00:00:00 2001 From: Lloyd Brookes Date: Fri, 30 Oct 2015 11:31:59 +0000 Subject: [PATCH] switch to js standard style --- README.md | 4 +- bin/ws.js | 247 ++++++++++++++++++++++++++--------------------------- lib/cli-options.js | 58 ++++++------- 3 files changed, 153 insertions(+), 156 deletions(-) diff --git a/README.md b/README.md index 7efe693..0ba3ce2 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ [![view on npm](http://img.shields.io/npm/v/local-web-server.svg)](https://www.npmjs.org/package/local-web-server) [![npm module downloads per month](http://img.shields.io/npm/dm/local-web-server.svg)](https://www.npmjs.org/package/local-web-server) [![Dependency Status](https://david-dm.org/75lb/local-web-server.svg)](https://david-dm.org/75lb/local-web-server) -![Analytics](https://ga-beacon.appspot.com/UA-27725889-12/local-web-server/README.md?pixel) +[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](https://github.com/feross/standard) # local-web-server Fires up a simple, CORS-enabled, static web server on a given port. Use for local web development or file sharing (directory browsing enabled). @@ -144,7 +144,7 @@ $ ws --config ``` ## mime-types -You can set additional mime-type/extension mappings, or override the defaults by setting a `mime` value in your local config. This value is passed directly to [mime.define()](https://github.com/broofa/node-mime#mimedefine). Example: +You can set additional mime-type/extension mappings, or override the defaults by setting a `mime` value in your local config. This value is passed directly to [mime.define()](https://github.com/broofa/node-mime#mimedefine). Example: ```json { diff --git a/bin/ws.js b/bin/ws.js index 69f53ad..d2bf914 100755 --- a/bin/ws.js +++ b/bin/ws.js @@ -1,46 +1,45 @@ #!/usr/bin/env node -"use strict"; -var dope = require("console-dope"); -var http = require("http"); -var cliArgs = require("command-line-args"); -var o = require("object-tools"); -var t = require("typical"); -var path = require("path"); -var loadConfig = require("config-master"); -var homePath = require("home-path"); -var logStats = require("stream-log-stats"); -var connect = require("connect"); -var morgan = require("morgan"); -var serveStatic = require("serve-static"); -var directory = require("serve-index"); -var compress = require("compression"); -var cliOptions = require("../lib/cli-options"); -var url = require("url"); +'use strict' +var dope = require('console-dope') +var http = require('http') +var cliArgs = require('command-line-args') +var o = require('object-tools') +var t = require('typical') +var path = require('path') +var loadConfig = require('config-master') +var homePath = require('home-path') +var logStats = require('stream-log-stats') +var connect = require('connect') +var morgan = require('morgan') +var serveStatic = require('serve-static') +var directory = require('serve-index') +var compress = require('compression') +var cliOptions = require('../lib/cli-options') /* specify the command line arg definitions and usage forms */ -var cli = cliArgs(cliOptions); +var cli = cliArgs(cliOptions) var usage = cli.getUsage({ - title: "local-web-server", - description: "Lightweight static web server, zero configuration.", - footer: "Project home: [underline]{https://github.com/75lb/local-web-server}", - usage: { - forms: [ - "$ ws ", - "$ ws --config", - "$ ws --help" - ] - }, - groups: { - server: "Server", - misc: "Misc" - } -}); + title: 'local-web-server', + description: 'Lightweight static web server, zero configuration.', + footer: 'Project home: [underline]{https://github.com/75lb/local-web-server}', + usage: { + forms: [ + '$ ws ', + '$ ws --config', + '$ ws --help' + ] + }, + groups: { + server: 'Server', + misc: 'Misc' + } +}) /* parse command line args */ try { - var wsOptions = cli.parse(); -} catch(err){ - halt(err.message); + var wsOptions = cli.parse() +} catch (err) { + halt(err.message) } /* Load and merge together options from @@ -49,110 +48,108 @@ try { - the `local-web-server` property of {cwd}/package.json */ var storedConfig = loadConfig( - path.join(homePath(), ".local-web-server.json"), - path.join(process.cwd(), ".local-web-server.json"), - { jsonPath: path.join(process.cwd(), "package.json"), configProperty: "local-web-server" } -); + path.join(homePath(), '.local-web-server.json'), + path.join(process.cwd(), '.local-web-server.json'), + { jsonPath: path.join(process.cwd(), 'package.json'), configProperty: 'local-web-server' } +) var builtInDefaults = { - port: 8000, - directory: process.cwd(), - "refresh-rate": 500, - mime: {} -}; + port: 8000, + directory: process.cwd(), + 'refresh-rate': 500, + mime: {} +} /* override built-in defaults with stored config and then command line args */ -wsOptions.server = o.extend(builtInDefaults, storedConfig, wsOptions.server); +wsOptions.server = o.extend(builtInDefaults, storedConfig, wsOptions.server) /* user input validation */ if (!t.isNumber(wsOptions.server.port)) { - halt("please supply a numeric port value"); + halt('please supply a numeric port value') } -if (wsOptions.misc.config){ - dope.log("Stored config: "); - dope.log(storedConfig); - process.exit(0); - -} else if (wsOptions.misc.help){ - dope.log(usage); - +if (wsOptions.misc.config) { + dope.log('Stored config: ') + dope.log(storedConfig) + process.exit(0) +} else if (wsOptions.misc.help) { + dope.log(usage) } else { - process.on("SIGINT", function(){ - dope.showCursor(); - dope.log(); - process.exit(0); - }); - - dope.hideCursor(); - launchServer(); - - /* write launch information to stderr (stdout is reserved for web log output) */ - if (path.resolve(wsOptions.server.directory) === process.cwd()){ - dope.error("serving at %underline{%s}", "http://localhost:" + wsOptions.server.port); - } else { - dope.error("serving %underline{%s} at %underline{%s}", wsOptions.server.directory, "http://localhost:" + wsOptions.server.port); - } + process.on('SIGINT', function () { + dope.showCursor() + dope.log() + process.exit(0) + }) + + dope.hideCursor() + launchServer() + + /* write launch information to stderr (stdout is reserved for web log output) */ + if (path.resolve(wsOptions.server.directory) === process.cwd()) { + dope.error('serving at %underline{%s}', 'http://localhost:' + wsOptions.server.port) + } else { + dope.error('serving %underline{%s} at %underline{%s}', wsOptions.server.directory, 'http://localhost:' + wsOptions.server.port) + } } -function halt(message){ - dope.red.log("Error: %s", message); - dope.log(usage); - process.exit(1); +function halt (message) { + dope.red.log('Error: %s', message) + dope.log(usage) + process.exit(1) } -function launchServer(){ - var app = connect(); - - /* enable cross-origin requests on all resources */ - app.use(function(req, res, next){ - res.setHeader("Access-Control-Allow-Origin", "*"); - next(); - }); - - if (wsOptions.server["log-format"] !== "none") app.use(getLogger()); - - /* --compress enables compression */ - if (wsOptions.server.compress) app.use(compress()); - - /* set the mime-type overrides specified in the config */ - serveStatic.mime.define(wsOptions.server.mime); - - /* enable static file server, including directory browsing support */ - app.use(serveStatic(path.resolve(wsOptions.server.directory))) - .use(directory(path.resolve(wsOptions.server.directory), { icons: true })); - - /* launch server */ - http.createServer(app) - .on("error", function(err){ - if (err.code === "EADDRINUSE"){ - halt("port " + wsOptions.server.port + " is already is use"); - } else { - halt(err.message); - } - }) - .listen(wsOptions.server.port); +function launchServer () { + var app = connect() + + /* enable cross-origin requests on all resources */ + app.use(function (req, res, next) { + res.setHeader('Access-Control-Allow-Origin', '*') + next() + }) + + if (wsOptions.server['log-format'] !== 'none') app.use(getLogger()) + + /* --compress enables compression */ + if (wsOptions.server.compress) app.use(compress()) + + /* set the mime-type overrides specified in the config */ + serveStatic.mime.define(wsOptions.server.mime) + + /* enable static file server, including directory browsing support */ + app.use(serveStatic(path.resolve(wsOptions.server.directory))) + .use(directory(path.resolve(wsOptions.server.directory), { icons: true })) + + /* launch server */ + http.createServer(app) + .on('error', function (err) { + if (err.code === 'EADDRINUSE') { + halt('port ' + wsOptions.server.port + ' is already is use') + } else { + halt(err.message) + } + }) + .listen(wsOptions.server.port) } -function getLogger(){ - /* log using --log-format (if supplied) */ - var logFormat = wsOptions.server["log-format"]; - if(logFormat) { - if (logFormat === "logstalgia"){ - /* customised logger :date token, purely to satisfy Logstalgia. */ - morgan.token("date", function(){ - var d = new Date(); - return (d.getDate() + "/" + d.getUTCMonth() + "/" + d.getFullYear() + ":" + d.toTimeString()) - .replace("GMT", "").replace(" (BST)", ""); - }); - logFormat = "combined"; - } - - return morgan(logFormat); - - /* if no `--log-format` was specified, pipe the default format output - into `log-stats`, which prints statistics to the console */ - } else { - return morgan("common", { stream: logStats({ refreshRate: wsOptions.server["refresh-rate"] }) }); +function getLogger () { + /* log using --log-format (if supplied) */ + var logFormat = wsOptions.server['log-format'] + if (logFormat) { + if (logFormat === 'logstalgia') { + /* customised logger :date token, purely to satisfy Logstalgia. */ + morgan.token('date', function () { + var d = new Date() + return (d.getDate() + '/' + d.getUTCMonth() + '/' + d.getFullYear() + ':' + d.toTimeString()) + .replace('GMT', '').replace(' (BST)', '') + }) + logFormat = 'combined' } + + return morgan(logFormat) + + /* if no `--log-format` was specified, pipe the default format output + into `log-stats`, which prints statistics to the console */ + } else { + return morgan('common', { stream: logStats({ refreshRate: wsOptions.server['refresh-rate'] }) }) + } } diff --git a/lib/cli-options.js b/lib/cli-options.js index aadc80b..7a3657d 100644 --- a/lib/cli-options.js +++ b/lib/cli-options.js @@ -1,30 +1,30 @@ module.exports = [ - { - name: "port", alias: "p", type: Number, defaultOption: true, - description: "Web server port", group: "server" - }, - { - name: "log-format", alias: "f", type: String, - description: "If a format is supplied an access log is written to stdout. If not, a statistics view is displayed. Use a preset ('none', 'dev','combined', 'short', 'tiny' or 'logstalgia') or supply a custom format (e.g. ':method -> :url').", group: "server" - }, - { - name: "directory", alias: "d", type: String, - description: "Root directory, defaults to the current directory", group: "server" - }, - { - name: "compress", alias: "c", type: Boolean, - description: "Enable gzip compression, reduces bandwidth.", group: "server" - }, - { - name: "refresh-rate", alias: "r", type: Number, - description: "Statistics view refresh rate in ms. Defaults to 500.", group: "server" - }, - { - name: "help", alias: "h", type: Boolean, - description: "Print these usage instructions", group: "misc" - }, - { - name: "config", type: Boolean, - description: "Print the stored config", group: "misc" - } -]; + { + name: 'port', alias: 'p', type: Number, defaultOption: true, + description: 'Web server port', group: 'server' + }, + { + name: 'log-format', alias: 'f', type: String, + description: "If a format is supplied an access log is written to stdout. If not, a statistics view is displayed. Use a preset ('none', 'dev','combined', 'short', 'tiny' or 'logstalgia') or supply a custom format (e.g. ':method -> :url').", group: 'server' + }, + { + name: 'directory', alias: 'd', type: String, + description: 'Root directory, defaults to the current directory', group: 'server' + }, + { + name: 'compress', alias: 'c', type: Boolean, + description: 'Enable gzip compression, reduces bandwidth.', group: 'server' + }, + { + name: 'refresh-rate', alias: 'r', type: Number, + description: 'Statistics view refresh rate in ms. Defaults to 500.', group: 'server' + }, + { + name: 'help', alias: 'h', type: Boolean, + description: 'Print these usage instructions', group: 'misc' + }, + { + name: 'config', type: Boolean, + description: 'Print the stored config', group: 'misc' + } +]