@abaccus/koapression

Koa compression middleware

Usage no npm install needed!

<script type="module">
  import abaccusKoapression from 'https://cdn.skypack.dev/@abaccus/koapression';
</script>

README

Koapression

Koa Compression middleware.

The following compression codings are supported:

  • deflate
  • gzip
  • brotli

Install

This is a Node.js module available through the npm registry. Installation is done using the npm install command:

$ npm install @abaccus/koapression

API

const koapression = require('@abaccus/koapression')

Example

const koapression = require('@abaccus/koapression')
const Koa = require('koa')

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

Options

The options are passed to zlib: http://nodejs.org/api/zlib.html#zlib_options

filter

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

threshold

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

Manually turning compression on and off

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

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