Skip to content

Latest commit

 

History

History
113 lines (81 loc) · 3.77 KB

README.md

File metadata and controls

113 lines (81 loc) · 3.77 KB

@medley/serve-static

npm Version Build Status Coverage Status dependencies Status

Medley plugin for serving static files.

Installation

npm install @medley/serve-static
# or
yarn add @medley/serve-static

Usage

const medley = require('@medley/medley');
const path = require('path');

const app = medley();

app.register(require('@medley/serve-static'), {
  root: path.join(__dirname, 'static')
});
// Serves files in the './static' folder from the root "/" URL

Options

root (required)

The absolute path of the directory that contains the files to serve. The file to serve will be determined by combining this value with req.url.

prefix

Default: '/'

A URL prefix that serves as a virtual mount path for the static directory.

const medley = require('@medley/medley');
const path = require('path');

const app = medley();

app.register(require('@medley/serve-static'), {
  root: path.join(__dirname, 'static'),
  prefix: '/static/'
});
// A request to "/static/styles.css" will get 'styles.css' in the './static' folder

Tip: Registering the plugin on a prefixed sub-app is an alternative to using this option.

setHeaders

Default: undefined

A function to set custom headers on the response. Setting headers must be done synchronously. The function receives the following arguments:

  • res - Node's ServerResponse object for the request.
  • filePath - The absolute path of the file that is being sent.
  • stats - The fs stats object of the file that is being sent.

Example:

// https://www.npmjs.com/package/content-disposition
const contentDisposition = require('content-disposition');

// Set header to force download
function setHeaders(res, filePath, stats) {
  res.setHeader('content-disposition', contentDisposition(filePath));
}

app.register(require('@medley/serve-static'), {
  root: path.join(__dirname, 'downloads'),
  setHeaders: setHeaders
});

send Options

The following options are also supported and will be passed directly to the send module:

About Errors

The send module is only designed to work with the native Node http module, so handling errors when using this module with Medley doesn’t work very well (without writing major workarounds that could end up hurting performance).

For this reason, if an error occurs while trying to send a file (including 404 errors when a file isn’t found), the error will be sent to Medley's onErrorSending function and a response will be sent automatically.