# koa-static

> Static file serving middleware for koa

Latest version **5.0.0** (published 2018-06-19) · MIT license · 0 weekly downloads

## Install

```sh
npm install koa-static
pnpm add koa-static
yarn add koa-static
bun add koa-static
```

## Health

**Score 33/100 (F)** — status: abandoned.

Positive: has types package; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: abandoned.

## Facts

| | |
|---|---|
| Version | 5.0.0 |
| Published | 2018-06-19 |
| First published | 2013-08-17 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | separate (@types/koa-static) |
| Module format | CommonJS |
| Node | >= 7.6.0 |
| Dependencies | 2 |
| Unpacked size | 7.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 1147 |
| Maintainers | aheckmann, coderhaoxin, dead_horse, eivifj, fengmk2, jonathanong, jongleberry, juliangruber, tejasmanohar, tjholowaychuk |
| Keywords | koa, middleware, file, static, sendfile |

## Links

- npm: https://www.npmjs.com/package/koa-static
- Repository: https://github.com/koajs/static
- Homepage: https://github.com/koajs/static#readme
- Issues: https://github.com/koajs/static/issues
- npm.io page: https://npm.io/package/koa-static

## Dependencies (2)

- [debug](https://npm.io/package/debug.md) ^3.1.0
- [koa-send](https://npm.io/package/koa-send.md) ^5.0.0

## Alternatives

- [unionfs](https://npm.io/package/unionfs.md) — 2.2M weekly downloads
- [path-starts-with](https://npm.io/package/path-starts-with.md) — 35.9K weekly downloads
- [redzip](https://npm.io/package/redzip.md) — 1.2K weekly downloads
- [vscode-anymatch](https://npm.io/package/vscode-anymatch.md) — 848 weekly downloads
- [@ledgerhq/coin-filecoin](https://npm.io/package/@ledgerhq/coin-filecoin.md) — 793 weekly downloads

## Recent versions

- 5.0.0 (latest) — 2018-06-19
- 1.5.3 (latest-1) — 2018-09-12
- 3.0.0 (next) — 2016-03-24
- 4.0.3 — 2018-05-17
- 4.0.2 — 2017-11-16
- 4.0.1 — 2017-07-09
- 4.0.0 — 2017-07-03
- 2.1.0 — 2017-02-03
- 2.0.0 — 2016-01-07
- 1.5.2 — 2015-11-04
- 1.5.1 — 2015-10-14
- 1.5.0 — 2015-10-13
- 1.4.9 — 2015-02-03
- 1.4.8 — 2014-12-17
- 1.4.7 — 2014-09-08
- … 12 more at https://npm.io/package/koa-static/versions

## README

# koa-static

[![NPM version][npm-image]][npm-url]
[![Build status][travis-image]][travis-url]
[![Test coverage][coveralls-image]][coveralls-url]
[![License][license-image]][license-url]
[![Downloads][downloads-image]][downloads-url]

Koa static file serving middleware, wrapper for [`koa-send`](https://github.com/koajs/send).

## Installation

```bash
$ npm install koa-static
```

## API

```js
import Koa from "koa"; // CJS: require('koa');
import serve from "koa-static"; // CJS: require('koa-static')
const app = new Koa();
app.use(serve(root, opts));
```

- `root` root directory string. nothing above this root directory can be served
- `opts` options object.

### Options

- `maxage` Browser cache max-age in milliseconds. defaults to 0
- `hidden` Allow transfer of hidden files. defaults to false
- `index` Default file name, defaults to 'index.html'
- `defer` If true, serves after `return next()`, allowing any downstream middleware to respond first.
- `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.
- `brotli` Try 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](https://github.com/koajs/send#setheaders) Function to set custom headers on response.
- `extensions` Try to match extensions from passed array to search for file when no extension is sufficed in URL. First found is served. (defaults to `false`).  e.g. `['html']`

## Example

```js
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");
```

### See also

- [koajs/conditional-get](https://github.com/koajs/conditional-get) Conditional GET support for koa
- [koajs/compress](https://github.com/koajs/compress) Compress middleware for koa
- [koajs/mount](https://github.com/koajs/mount) Mount `koa-static` to a specific path

## License

MIT

[npm-image]: https://img.shields.io/npm/v/koa-static.svg?style=flat-square
[npm-url]: https://npmjs.org/package/koa-static
[github-tag]: http://img.shields.io/github/tag/koajs/static.svg?style=flat-square
[github-url]: https://github.com/koajs/static/tags
[travis-image]: https://img.shields.io/travis/koajs/static.svg?style=flat-square
[travis-url]: https://travis-ci.org/koajs/static
[coveralls-image]: https://img.shields.io/coveralls/koajs/static.svg?style=flat-square
[coveralls-url]: https://coveralls.io/r/koajs/static?branch=master
[license-image]: http://img.shields.io/npm/l/koa-static.svg?style=flat-square
[license-url]: LICENSE
[downloads-image]: http://img.shields.io/npm/dm/koa-static.svg?style=flat-square
[downloads-url]: https://npmjs.org/package/koa-static
[gittip-image]: https://img.shields.io/gittip/jonathanong.svg?style=flat-square
[gittip-url]: https://www.gittip.com/jonathanong/

---
_Source: https://npm.io/package/koa-static · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
