Skip to content

gjbkz/middleware-static-livereload

Repository files navigation

middleware-static-livereload

Test codecov BrowserStack Status

A middleware for connect server. It injects the autoreload script into text/html files before serving them.

Install

npm install middleware-static-livereload

Usage

const http = require('http');
const connect = require('connect');
const app = connect();
app.use(require('middleware-static-livereload').middleware());
const server = http.createServer(app).listen(3000);

Options

{
  /**
    * Directories which contains the files to be served.
    * If it is an array, it is processed as following pseudo code:
    *   FOREACH documentRoot in the array
    *     IF documentRoot has a file at requestedPath
    *       RETURN the file
    *   RETURN 404
    * @default process.cwd()
    */
  documentRoot?: string | Array<string>,
  /**
    * If it is `false` or `null`, the middleware doesn't watch files.
    * Otherwise, the middleware watches the served files and send events
    * to connected clients when they are updated.
    * If you need to do something with the watcher outside this middleware,
    * you can pass the watcher object itself.
    * @default {ignoreInitial:false, useFsEvents:false}
    */
  watch?: chokidar.WatchOptions | chokidar.FSWatcher | boolean | null,
  /**
    * If this value is `foo.txt`, the middleware respond `/foo.txt` to `GET /`,
    * `/foo/foo.txt` to `GET /foo/`.
    * @default 'index.html'
    */
  index?: string,
  /**
    * A map from Content-Type to an array of file extensions.
    * If you given a map, it extends the default map.
    * @default See [src/defaultContentTypes.ts](src/defaultContentTypes.ts).
    */
  contentTypes?: {
      [type: string]: string | Array<string>,
  },
  /**
    * 0: debug, 1: info, 2: error, 3: silent
    * @default 1
    */
  logLevel?: LogLevel,
  /**
    * Streams where the middleware writes message to.
    * @default process.stdout
    */
  stdout?: NodeJS.WritableStream,
  /**
    * Streams where the middleware writes message to.
    * @default process.stderr
    */
  stderr?: NodeJS.WritableStream,
  /**
    * A pattern or patterns to detect the position before which a <script> tag
    * is inserted.
    * If this value is `x` and the document is `abc x def`, then the actual
    * response will be `abc <script src="..."></script>x def`.
    * @default [/<\/head/i, /<\/body/i, /<meta/i, /<title/i, /<script/i, /<link/i]
    */
  insertBefore?: string | RegExp | Array<string | RegExp>,
  /**
    * A pattern or patterns to detect the position after which a <script> tag
    * is inserted.
    * If this value is `x` and the document is `abc x def`, then the actual
    * response will be `abc x<script src="..."></script> def`.
    * @default [/<!doctype\s*html\s*>/i]
    */
  insertAfter?: string | RegExp | Array<string | RegExp>,
  /**
    * A pathname for the script enables live reloading.
    * If the default value conflicts with other middlewares, change this value.
    * @default 'middleware-static-livereload.js'
    */
  scriptPath?: string,
}

LICENSE

The middleware-static-livereload project is licensed under the terms of the Apache 2.0 License.