Koa static file serving middleware, wrapper for koa-send.
$ npm install koa-staticimport Koa from "koa"; // CJS: require('koa');
import serve from "koa-static"; // CJS: require('koa-static')
const app = new Koa();
app.use(serve(root, opts));rootroot directory string. nothing above this root directory can be servedoptsoptions object.
CommonJS (require('koa-static')) and ESM default imports are supported on Node.js 22 and newer. TypeScript declarations are included.
maxageBrowser cache max-age in milliseconds. defaults to 0hiddenAllow transfer of hidden files. defaults to falseindexDefault file name, defaults to 'index.html'deferIf true, serves afterreturn next(), allowing any downstream middleware to respond first.gzipTry 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.brotliTry to serve the brotli version of a file automatically when brotli is supported by a client and if the requested file with .br extension exists (note, that brotli is only accepted over https). defaults to true.- setHeaders Function to set custom headers on response.
extensionsTry to match extensions from passed array to search for file when no extension is sufficed in URL. First found is served. (defaults tofalse). e.g.['html']
const serve = require("koa-static");
const Koa = require("koa");
const app = new Koa();
// $ GET /package.json
app.use(serve("."));
// $ GET /hello.txt
app.use(serve("test/fixtures"));
// or use absolute paths
app.use(serve(__dirname + "/test/fixtures"));
app.listen(3000);
console.log("listening on port 3000");- koajs/conditional-get Conditional GET support for koa
- koajs/compress Compress middleware for koa
- koajs/mount Mount
koa-staticto a specific path
Use Node.js 26. Run npm run setup to install dependencies, validate, and install the optional pre-commit hook.
Run npm run validate for lint, types, and tests; npm run build emits CommonJS, ESM, and declarations in dist/.
MIT