diff --git a/bin/ws.js b/bin/ws.js index 5f664cc..02c7d8a 100755 --- a/bin/ws.js +++ b/bin/ws.js @@ -1,7 +1,6 @@ #!/usr/bin/env node 'use strict' const localWebServer = require('../') -const streamLogStats = require('stream-log-stats') const commandLineArgs = require('command-line-args') const ansi = require('ansi-escape-sequences') const cliOptions = require('../lib/cli-options') @@ -34,23 +33,11 @@ options.cli.server = Object.assign(options.builtIn, options.stored, options.cli. if (options.cli.misc.help) return console.log(usage) if (options.cli.misc.config) return console.log(JSON.stringify(options.stored, null, ' ')) -let log = { - format: options.cli.server['log-format'] -} - -if (log.format === 'none'){ - log.format = undefined -} else if (log.format){ - log.stream = process.stdout -} else { - log.format = 'common' - log.stream = streamLogStats({ refreshRate: 100 }) -} - localWebServer({ static: { root: options.cli.server.directory }, serveIndex: { path: options.cli.server.directory, options: { icons: true } }, - logger: { format: log.format, options: { stream: log.stream } } + logger: { format: options.cli.server['log-format'] }, + compress: options.cli.server.compress }).listen(options.cli.server.port, serverUp) function halt (message) { @@ -64,6 +51,6 @@ function serverUp () { if (path.resolve(options.cli.server.directory) === process.cwd()) { console.error(ansi.format(`serving at [underline]{http://localhost:${options.cli.server.port}}`)) } else { - console.error(ansi.format(`serving [underline]{options.cli.server.directory} at [underline]{http://localhost:${options.cli.server.port}}`)) + console.error(ansi.format(`serving [underline]{${options.cli.server.directory}} at [underline]{http://localhost:${options.cli.server.port}}`)) } } diff --git a/lib/local-web-server.js b/lib/local-web-server.js index 5dd501c..d8b225d 100644 --- a/lib/local-web-server.js +++ b/lib/local-web-server.js @@ -4,6 +4,8 @@ const serve = require('koa-static') const convert = require('koa-convert') const serveIndex = require('koa-serve-index') const morgan = require('koa-morgan') +const compress = require('koa-compress') +const streamLogStats = require('stream-log-stats') /** * @module local-web-server @@ -18,19 +20,47 @@ function getApp (options) { options = Object.assign({ static: {}, serveIndex: {}, - logger: {} + logger: {}, + compress: false }, options) const app = new Koa() + if (options.compress) { + console.log('comp'); + app.use(convert(compress())) + } + + let log = { format: options.logger.format } if (options.logger.format) { - app.use(convert(morgan.middleware(options.logger.format, options.logger.options))) + + if (log.format === 'none'){ + log.format = undefined + } else if (log.format === '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)', '') + }) + log.format = 'combined' + } else if (log.format) { + log.stream = process.stdout + } + } else { + log.format = 'common' + log.stream = streamLogStats({ refreshRate: 100 }) } + options.logger.options = options.logger.options || {} + options.logger.options.stream = log.stream + if (log.format) app.use(convert(morgan.middleware(log.format, options.logger.options))) + if (options.static.root) { app.use(convert(serve(options.static.root, options.static.options))) } if (options.serveIndex.path) { app.use(convert(serveIndex(options.serveIndex.path, options.serveIndex.options))) } + return app } diff --git a/package.json b/package.json index 737def4..4eb61fd 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "kcors": "^1.0.1", "koa": "^2.0.0-alpha.3", "koa-charset": "^1.1.4", + "koa-compress": "^1.0.8", "koa-convert": "^1.1.0", "koa-json": "^1.1.1", "koa-morgan": "^0.4.0", diff --git a/test/test.js b/test/test.js index c0c2d5f..61613f4 100644 --- a/test/test.js +++ b/test/test.js @@ -66,3 +66,16 @@ test('log: common', function (t) { request('http://localhost:8100/') .then(() => server.close()) }) + +test('compress', function(t){ + const app = localWebServer({ compress: true }) + +}) + +function launchServer (app, onSuccess) { + const server = http.createServer(app.callback()) + server.listen(8100) + const req = request('http://localhost:8100/') + if (onSuccess) req.then(onSuccess) + req.then(() => server.close()) +}