One of the goals I had when I converted my blog to Jekyll was to speed up front end performance. To do this I wanted to minify the CSS and HTML files I deployed (I’m already manually handling the minification of the JS files). Luckly, grenadesandwich.com by Steven Merrill was already doing this and provided a good outline. I’m now able to use the command
make deploy to generate the site, minify everything, and deploy it to the server.
To do all of this I take advantage of yuicompressor, htmlcompressor, make, and rsync. While make and rsync are installed on the system the Java jar files for yuicompressor and htmlcompressor are in a _build directory within my Jekyll site.
At the root of the site I have a Makefile containing the code snippet below (with some modifications for paths).
server: @@jekyll --server render: @@echo "Building the site..." @@jekyll --no-future minify: @@echo "Minifying the CSS..." @@java -jar _build/yuicompressor.jar --verbose --type css -o _site/path/to/style.css _site/path/to/style.css @@echo "Minifying the HTML..." @@java -jar _build/htmlcompressor.jar -r --type html -o _site _site build: render minify deploy: build @@echo 'Deploying site.' @@rsync -avq --delete-after _site/ sshAlias:/path/to/site/html .PHONY: server render build minify deploy
You can get this as a gist.
The path to the css file and the location where rsync places the files are customized for my site and you should update those as well.