3.2.1 • Published 30 days ago
koa-files v3.2.1
koa-files
A static files serving middleware for koa.
Installation
$ npm install koa-files
API
import { Middleware } from 'koa';
import fs, { Stats } from 'node:fs';
interface IgnoreFunction {
(path: string): boolean;
}
interface Headers {
[key: string]: string | string[];
}
interface HeadersFunction {
(path: string, stats: Stats): Promise<Headers | void> | Headers | void;
}
export interface FileSystem {
stat: typeof fs.stat;
open: typeof fs.open;
read: typeof fs.read;
close: typeof fs.close;
}
export interface Options {
fs?: FileSystem;
defer?: boolean;
etag?: boolean;
acceptRanges?: boolean;
lastModified?: boolean;
highWaterMark?: number;
ignore?: IgnoreFunction;
headers?: Headers | HeadersFunction;
}
export default function server(root: string, options?: Options): Middleware;
root
- Root directory string.
- Nothing above this root directory can be served.
Options
fs
- Defaults to
node:fs
. - The file system to used.
defer
- Defaults to
false
. - If true, serves after
await next()
. - Allowing any downstream middleware to respond first.
etag
- Defaults to
true
. - Enable or disable etag generation.
- Use weak etag internally.
- Can be overridden by the
headers
.
acceptRanges
- Defaults to
true
. - Enable or disable accepting ranged requests.
- Disabling this will not send Accept-Ranges and ignore the contents of the Range request header.
- Can be overridden by the
headers
.
lastModified
- Defaults to
true
. - Enable or disable Last-Modified header.
- Use the file system's last modified value.
- Can be overridden by the
headers
.
highWaterMark
- Defaults to
65536
(64 KiB). - Set the high water mark for the read stream.
ignore
- Defaults to
undefined
. - Function that determines if a file should be ignored.
headers
- Defaults to
undefined
. - Set headers to be sent.
- See docs: Headers in MDN.
Example
/**
* @module server
* @license MIT
* @author nuintun
*/
import Koa from 'koa';
import files from 'koa-files';
const app = new Koa();
const port = process.env.PORT || 80;
// Static files server
app.use(
files('tests', {
headers: {
'Cache-Control': 'public, max-age=31557600'
}
})
);
/**
* @function httpError
* @param {NodeJS.ErrnoException} error
* @returns {boolean}
*/
function httpError(error) {
return /^(EOF|EPIPE|ECANCELED|ECONNRESET|ECONNABORTED)$/i.test(error.code);
}
// Listen error event
app.on('error', error => {
!httpError(error) && console.error(error);
});
// Start server
app.listen(port, () => {
console.log(`> server running at: 127.0.0.1:${port}`);
});
Features
Support multipart range and download resumption.
License
MIT
3.2.1
30 days ago
3.2.0
1 month ago
3.1.11
1 month ago
3.1.10
1 month ago
3.1.9
1 month ago
3.1.8
1 month ago
3.0.7
1 month ago
3.0.6
1 month ago
3.0.5
2 months ago
3.1.3
1 month ago
3.1.2
1 month ago
3.1.1
1 month ago
3.1.0
1 month ago
3.1.7
1 month ago
3.1.6
1 month ago
3.1.5
1 month ago
3.1.4
1 month ago
3.0.4
4 months ago
3.0.3
5 months ago
3.0.2
5 months ago
3.0.1
6 months ago
3.0.0
8 months ago
2.3.8
8 months ago
2.3.7
9 months ago
2.3.2
2 years ago
2.3.4
2 years ago
2.3.3
2 years ago
2.3.6
2 years ago
2.3.5
2 years ago
2.3.1
2 years ago
2.3.0
3 years ago
2.1.2
3 years ago
2.2.0
3 years ago
2.1.1
3 years ago
2.1.0
3 years ago
2.0.0
3 years ago
1.0.3
5 years ago
1.0.2
5 years ago
1.0.1
5 years ago
1.0.0
5 years ago
0.3.3
5 years ago
0.3.2
5 years ago
0.3.0
5 years ago
0.3.1
5 years ago
0.2.1
5 years ago
0.2.2
5 years ago
0.2.0
5 years ago
0.1.0
5 years ago
0.0.1
5 years ago
0.0.0
5 years ago