node package manager



NPM version Build status Test coverage Dependency Status License Downloads

Static file serving middleware.


$ npm install koa-send-cache


  • maxage Browser cache max-age in milliseconds. defaults to 0
  • hidden Allow transfer of hidden files. defaults to false
  • root Root directory to restrict file access
  • gzip Try to serve the gzipped version of a file automatically when gzip is supported by a client and if the requested file with .gz extension exists. defaults to true.
  • format If true, format the path to serve static file servers and not require a trailing slash for directories, so that you can do both /directory and /directory/

Root path

Note that root is required, defaults to '' and will be resolved, removing the leading / to make the path relative and this path must not contain "..", protecting developers from concatenating user input. If you plan on serving files based on user input supply a root directory from which to serve from.

For example to serve files from ./public:

app.use(function *(){
  yield send(this, this.path, { root: __dirname + '/public' });

To serve developer specified files:

app.use(function *(){
  yield send(this, 'path/to/my.js');


var send = require('koa-send-cache');
var koa = require('koa');
var app = koa();
// $ GET /package.json 
// $ GET / 
app.use(function *(){
  if ('/' == this.path) return this.body = 'Try GET /package.json';
  yield send(this, __dirname + '/package.json');
console.log('listening on port 3000');