Metalsmith plugin for gzipping the output files.
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

metalsmith-gzip Build Status

Greenkeeper badge

A Metalsmith plugin that creates gzipped copies of the site's content. This is useful for website hosting on Amazon S3, where on the fly compression in the server is impossible.


$ npm install metalsmith-gzip


var Metalsmith = require('metalsmith');
var compress = require('metalsmith-gzip');

var metalsmith = new Metalsmith(__dirname)

metalsmith-gzip will gzip a file if the extension matches this regular expression:


The choice of files to compress is loosely based on the HTML5 Boilerplate server configuration.


Pass an options object to customize metalsmith-gzip behaviour. These are the available options keys:

src is a multimatch pattern which specifies which types of files to compress.

var metalsmith = new Metalsmith(__dirname)
  .use(compress({src: ['**/*.js', '**/*.css']})); // only compresses JavaScript and CSS

gzip is the same configuration object accepted by zlib.createGzip ( For example, you can set the compression level:

var metalsmith = new Metalsmith(__dirname)
    src: ['**/*.js', '**/*.css'],
    gzip: {level: 6}

Add overwrite: true to replace files with the compressed version instead of creating a copy with the '.gz' extension:

var metalsmith = new Metalsmith(__dirname)
  .use(compress({overwrite: true});


You need to create a script to upload the gzipped versions of the files to your preferred hosting provider yourself. Take care to serve the files with the correct Content-Encoding.


This plugin was inspired by the Middleman gzip extension.