Skip to content

Latest commit

 

History

History
69 lines (50 loc) · 1.76 KB

README.md

File metadata and controls

69 lines (50 loc) · 1.76 KB

Koa Compress

Node.js CI codecov

Compress middleware for Koa

Example

const compress = require('koa-compress')
const Koa = require('koa')

const app = new Koa()
app.use(compress({
  filter (content_type) {
  	return /text/i.test(content_type)
  },
  threshold: 2048,
  gzip: {
    flush: require('zlib').Z_SYNC_FLUSH
  },
  deflate: {
    flush: require('zlib').Z_SYNC_FLUSH,
  },
  br: false // disable brotli
}))

Options

filter<Function>

function (mimeType: string): Boolean {

}

An optional function that checks the response content type to decide whether to compress. By default, it uses compressible.

options.threshold<String|Number>

Minimum response size in bytes to compress. Default 1024 bytes or 1kb.

options[encoding]<Object>

The current encodings are, in order of preference: br, gzip, deflate. Setting options[encoding] = {} will pass those options to the encoding function. Setting options[encoding] = false will disable that encoding.

options.br

Brotli compression is supported in node v11.7.0+, which includes it natively.

Manually turning compression on and off

You can always enable compression by setting ctx.compress = true. You can always disable compression by setting ctx.compress = false. This bypasses the filter check.

app.use((ctx, next) => {
  ctx.compress = true
  ctx.body = fs.createReadStream(file)
})