JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 16568
  • Score
    100M100P100Q132072F
  • License MIT

Adding gzip/brotli for your HTTP server

Package Exports

  • http-compression
  • http-compression/src/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (http-compression) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

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 an Express style middleware 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: object
Default: { brotli: 1, gzip: 1 }

The compression effort/level/quality setting, used by both Gzip and Brotli. The scale range is:

  • brotli: from 0 to 11.
  • gzip: from -1 to 9.

The library uses uses the most efficiency level by default determined by a benchmark.

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 · X @Kikobeats