Metalsmith plugin for gzipping the output files.
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
test
.eslintrc
.gitignore
.npmignore
.travis.yml
HISTORY.md
LICENSE
README.md
package.json

README.md

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.

Installation

$ npm install metalsmith-gzip

Usage

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

var metalsmith = new Metalsmith(__dirname)
  .use(compress());

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

/\.[html|css|js|json|xml|svg|txt]/

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

Customization

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 (http://nodejs.org/api/zlib.html#zlib_options). For example, you can set the compression level:

var metalsmith = new Metalsmith(__dirname)
  .use(compress({
    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});

Deployment

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.

Acknowledgements

This plugin was inspired by the Middleman gzip extension.