@averay/gulp-precompress
v1.0.1
Published
A Gulp plugin to generate precompressed assets to avoid on-the-fly webserver compression.
Downloads
6
Readme
@averay/gulp-precompress
A Gulp plugin to generate precompressed assets to avoid on-the-fly webserver compression.
Compressed versions of static web assets are typically compressed on-demand by a webserver (e.g. with nginx's gzip module). While the webserver will usually cache the compressed versions, the need to respond quickly means a faster compression setting is typically used, resulting in slightly suboptimal compression ratios. This plugin allows generating the compressed versions ahead of time, which enables using slower, more aggressive compression settings.
Compressed versions are stored alongside the sources (e.g. styles.css
will be accompanied by styles.css.gz
& styles.css.br
). The webserver then needs to be configured to use these static compressed files (e.g. with nginx's gzip_static module & brotli module).
Usage
Pipe the precompress plugin into the Gulp stream after all other plugins, directly before the final pipe to gulp.dest()
:
import precompress from '@averay/gulp-precompress';
gulp
.src('...')
.pipe(/* Apply other plugins */)
.pipe(precompress())
.pipe(gulp.dest('...'));
Options
The plugin can be configured by passing a single (optional) object argument to the function:
formats
: Which compression formats to generate, and optional format-specific configuration (default:{ brotli: {...}, gzip: {...} }
– see defaults)skipLarger
: Whether to omit outputting compressed files that are larger than the source file (default:true
)
precompress({
formats: { gzip: true, brotli: false },
skipLarger: false,
});