ChannelZ is a CLI tool for x86-64 Linux machines that simplifies the common task of encoding static web assets with Gzip and Brotli for production environments.
brotliare compiled into
channelz; their binaries do not need to be separately installed;
- The maximum compression settings are applied; the end results will often be smaller than running native
brotlithanks to various optimizations;
- It can be set against one or many files, one or many directories;
- Paths can be specified as trailing command arguments, and/or loaded via text file (with one path per line) with the
- Directory processing is recursive;
- Processing is done in parallel with multiple threads for major speedups;
- Appropriate file types are automatically targeted; no thinking involved!
The "appropriate" file types are:
Debian and Ubuntu users can grab the pre-built
.deb package from the release page.
This application is written in Rust and can alternatively be built from source using Cargo:
# Clone the source. git clone https://github.com/Blobfolio/channelz.git # Go to it. cd channelz # Build as usual. Specify additional flags as desired. cargo build \ --bin channelz \ --release
(This should work under other 64-bit Unix environments too, like MacOS.)
It's easy. Just run
channelz [FLAGS] [OPTIONS] <PATH(S)>….
The following flags and options are available:
--clean Remove all existing *.gz *.br files before starting. -h, --help Prints help information -l, --list <list> Read file paths from this list. -p, --progress Show progress bar while minifying. -V, --version Prints version information
# Generate app.js.gz and app.js.br: channelz /path/to/app.js # Tackle a whole folder at once with a nice progress bar: channelz -p /path/to/assets # Do the same thing, but clear out any old *.gz or *.br files first: channelz --clean -p /path/to/assets # Or load it up with a lot of places separately: channelz /path/to/css /path/to/js …
ChannelZ's compression is a little bit stronger than
brotli -q 11 and
gzip -9, but not by much.
Timing-wise, though, it's no competition. :)