brotlin

A handy CLI/API for Brotli compression

Usage no npm install needed!

<script type="module">
  import brotlin from 'https://cdn.skypack.dev/brotlin';
</script>

README

brotlin

A handy CLI/API for Brotli compression based on npm/brotli. Helps you to convert files to Brotli(.br) format.

Install

Requires Node >=8.

From npm,

npm i -g brotlin

From Github Package Registry. (Guide).

Type definitions are bundled with this package.

Usage

Quick start

# cd to your dir
cd my-dir

# all files matching * glob pattern
brotlin compress *

# same as above (all files matching *)
brotlin compress

# single file
brotlin compress index.html

# decompress
brotlin decompress index.html.br

# you've options (--help for more)
brotlin compress style.css --quality 8 # default is 11

A new compressed file ending with .br will be created for every file feeding in to the CLI.

You can pass in a relative path or an absolute path or a glob pattern.

--help for help

$ brotlin --help
Usage: brotlin [options] [command]

Options:
  -V, --version                output the version number
  -h, --help                   output usage information

Commands:
  compress [options] [file]    Creates a compressed file in the same location. Argument can be
                               relative/absolute/glob paths [default:*]. Check
                               https://www.npmjs.com/package/brotli to know more about the
                               following options
  decompress [options] [file]  Creates a decompressed file in the same location. Argument can be
                               relative/absolute/glob paths [default:*]. Check
                               https://www.npmjs.com/package/brotli to know more about the
                               following options

--help for brotlin compress command:

$ brotlin compress --help
Usage: brotlin compress [options] [file]

Creates a compressed file in the same location. Argument can be relative/absolute/glob paths [default:*]. Check https://www.npmjs.com/package/brotli to know more about the following options

Options:
  -m, --mode <number>     Brotli compression mode (0 = generic[default], 1 = text, 2 = font (WOFF2))
  -q, --quality <number>  Compression quality [0 - 11]. [default: 11]
  -w, --window <number>   Compression window size [default: 22]
  -p, --parallel <count>  Processes <count> number of files in parallel. [default: 1]
  -h, --help              output usage information

For knowing more about these options, see npm/brotli.

For decompress, see brotlin decompress --help

One more example

# compress all fils in the dist folder
cd dist # moved to dist
brotlin compress **/* # compress all files in the directory

APIs

import { compression, decompression } from 'brotlin';
// or
const { compression, decompression } = require('brotlin');

compression({
  path: '*.html', // required
  parallelJobCount: 1, // optional
  mode: 0, // optional
  quality: 11, // optional
  windowSize: 22 // optional
}).then(files => console.log(`Compressed ${files.length} files`));

decompression({
  path: '*.html.br', // required
  parallelJobCount: 1 // optional
}).then(files => console.log(`Decompressed ${files.length} files`));

Having issues with compression?

This module uses the npm/brotli module. Hence check the reported issues also.

Licence

MIT © Vajahath Ahmed