http-compression

1.0.19 • Public • Published

http-compression

Last version Coverage Status NPM Status

http-compression adds compression for your HTTP server in Node.js by:

  • No dependencies (< 1kB).
  • Express style middleware support.
  • Auto detect the best encoding to use (gzip/brotli).

Install

$ npm install http-compression --save

Usage

If you are using an Express style framework, you can add it as middlware:

const compression = require('http-compression')
const express = require('express')

express()
  .use(compression({ /* see options below */ }))
  .use((req, res) => {
    // this will get compressed:
    res.end('hello world!'.repeat(1000))
  })
  .listen(3000)

Otherwise, just pass req, res primitives to it:

const compression = require('http-compression')({ /* see options below */ })
const { createServer } = require('http')

const server = createServer((req, res) => {
  compression(req, res)
  res.end('hello world!'.repeat(1000))
})

server.listen(3000, () => {
  console.log('> Listening at http://localhost:3000')
})

API

The compression(options) function returns a Express style iddleware of the form (req, res, next).

Options

threshold

Type: Number
Default: 1024

Responses below this threshold (in bytes) are not compressed. The default value of 1024 is recommended, and avoids sharply diminishing compression returns.

level

Type: Number
Default: -1

The compression effort/level/quality setting, used by both Gzip and Brotli. The scale ranges from 1 to 11, where lower values are faster and higher values produce smaller output. The default value of -1 uses the default compression level as defined by Gzip (6) and Brotli (6).

brotli

Type: boolean
Default: true

Enables response compression using Brotli for requests that support it. as determined by the Accept-Encoding request header.

gzip

Type: boolean
Default: true

Enables response compression using Gzip for requests that support it, as determined by the Accept-Encoding request header.

mimes

Type: RegExp
Default: /text|javascript|\/json|xml/i

The Content-Type response header is evaluated against this Regular Expression to determine if it is a MIME type that should be compressed. Remember that compression is generally only effective on textual content.

License

Thanks to developit for written the original code implementation for polka#148.

http-compression © Kiko Beats, released under the MIT License.
Authored and maintained by Kiko Beats with help from contributors.

kikobeats.com · GitHub Kiko Beats · Twitter @Kikobeats

Package Sidebar

Install

npm i http-compression

Weekly Downloads

4,492

Version

1.0.19

License

MIT

Unpacked Size

11.3 kB

Total Files

4

Last publish

Collaborators

  • kikobeats