diff --git a/README.md b/README.md index f2b379f..5f1ceb3 100644 --- a/README.md +++ b/README.md @@ -8,28 +8,33 @@ ***Requires node v4.0.0 or higher. Install the [previous release](https://github.com/75lb/local-web-server/tree/prev) for older node support.*** # local-web-server -An application shell for building a simple, command-line web server for productive web development. It contains no middleware of its own but will load default-stack unless you specify otherwise. +At its core, local-web-server is an application shell for building a specialised command-line web server to support productive Web Platform engineers. It comes bundled with a middleware stack covering common requirements but any arbitrary stack can be specified from the command line or config. -It is trivial is bundle and deploy with your project. Also deploys to heroku well for demo projects. +Being an npm module, it is trivial is bundle and distribute/deploy with your web application. -It comes with some middleware built-in, which you need not use but will get you up and running for the following use cases: +**Typically used for building:** -* Static or Single Page Application front-end development where you have - * No backend, an existing remote API or need to mock-up an API. +* Simple static site +* Single Page Application + * Works well with React, Angular or vanilla JS. -Application Shell - * HTTP or HTTPS server - * HTTPS is strictly required by some modern techs (ServiceWorker, Media Capture and Streams etc.) - * Add your middleware - * Use any combination of built-in and custom middleware - * specify options (for command line or config) - * Accepts Koa v1 or 2 middleware - * Bundle with your front-end project - * Configuration is via json file or command-line (latter taking precedence) - * Outputs a dynamic statistics view to the terminal +**Backend scenarios covered:** +* Existing API +* Mock API +* Websocket server + +**Server options** + +* HTTP or HTTPS server + * HTTPS is strictly required by some modern techs (ServiceWorker, Media Capture and Streams etc.) +* Configurable middleware stack + * Use any combination of built-in and custom middleware + * specify options (for command line or config) + * Accepts Koa v1 or 2 middleware + +**Built-in Middleware stack** -Built-in Middleware (all optional) * Rewrite routes to local or remote resources * Efficient, predictable, entity-tag-powered conditional request handling (no need to 'Disable Cache' in DevTools, slowing page-load down) * Configurable log output, compatible with [Goaccess, Logstalgia and glTail](https://github.com/75lb/local-web-server/blob/master/doc/visualisation.md) @@ -40,6 +45,9 @@ Built-in Middleware (all optional) * Mocks are defined with config (static), or code (dynamic). * CORS-friendly, all origins allowed by default. +**Personalised stack** + + ## Synopsis local-web-server is a command-line tool. To serve the current directory, run `ws`. @@ -86,32 +94,8 @@ local-web-server is a command-line tool. To serve the current directory, run `ws Project home: https://github.com/75lb/local-web-server -## Examples - -For the examples below, we assume we're in a project directory looking like this: - -```sh -. -├── css -│   └── style.css -├── index.html -└── package.json -``` - -All paths/routes are specified using [express syntax](http://expressjs.com/guide/routing.html#route-paths). To run the example projects linked below, clone the project, move into the example directory specified, run `ws`. - -### Static site - -Fire up your static site on the default port: -```sh -$ ws -serving at http://localhost:8000 -``` - -[Example](https://github.com/75lb/local-web-server/tree/master/example/simple). ## Install -Ensure [node.js](http://nodejs.org) is installed first. Linux/Mac users may need to run the following commands with `sudo`. ```sh $ npm install -g local-web-server diff --git a/example/stack/cache-control.js b/example/stack/cache-control.js deleted file mode 100644 index 074a52e..0000000 --- a/example/stack/cache-control.js +++ /dev/null @@ -1,27 +0,0 @@ -'use strict' -const LocalWebServer = require('../../') -const cacheControl = require('koa-cache-control') -const DefaultStack = require('local-web-server-default-stack') - -class CacheControl extends DefaultStack { - addAll () { - return this.addLogging('dev') - .addCacheControl() - .addStatic() - .addIndex() - } - addCacheControl () { - this.add({ - optionDefinitions: { - name: 'maxage', type: Number, - description: 'The maxage to set on each response.' - }, - middleware: function (options) { - return cacheControl({ maxAge: options.maxage }) - } - }) - return this - } -} - -module.exports = CacheControl diff --git a/example/stack/live-reload-optional/index.html b/example/stack/live-reload-optional/index.html deleted file mode 100644 index f467990..0000000 --- a/example/stack/live-reload-optional/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - live-reload demo - - -

Live reloaded potentially attached

- - diff --git a/example/stack/live-reload-optional/stack.js b/example/stack/live-reload-optional/stack.js deleted file mode 100644 index aa4f4ce..0000000 --- a/example/stack/live-reload-optional/stack.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict' -const LocalWebServer = require('../../../') -const liveReload = require('koa-livereload') -const DefaultStack = require('local-web-server-default-stack') - -class LiveReloadStack extends DefaultStack { - addAll () { - return this.addLogging('dev') - .add({ - optionDefinitions: { - name: 'live-reload', type: Boolean, - description: 'Add live reload.' - }, - middleware: function (options) { - if (options['live-reload']) { - return liveReload() - } - } - }) - .addStatic() - } -} - -module.exports = LiveReloadStack diff --git a/example/stack/live-reload/index.html b/example/stack/live-reload/index.html deleted file mode 100644 index 0cc6591..0000000 --- a/example/stack/live-reload/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - live-reload demo - - -

Live reloaded attached

- - diff --git a/example/stack/live-reload/stack.js b/example/stack/live-reload/stack.js deleted file mode 100644 index 217a428..0000000 --- a/example/stack/live-reload/stack.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict' -const LocalWebServer = require('../../../') -const liveReload = require('koa-livereload') -const DefaultStack = require('local-web-server-default-stack') - -class LiveReloadStack extends DefaultStack { - addAll () { - return this.addLogging('dev') - .add({ middleware: liveReload }) - .addStatic() - } -} - -module.exports = LiveReloadStack