0.09
There's a lot of open issues
A long-lived project that still receives updates
Jekyll Minifier using htmlcompressor for html, terser for js, and cssminify2 for css
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies

Development

~> 3.4
~> 13.3
~> 3.13
~> 0.3

Runtime

~> 0.0.3
~> 2.1.0
~> 4.0
~> 1.2.3
 Project Readme

jekyll-minifier Build Status Gem Version

Requires Ruby 3.0+

Key Features

  • Modern ES6+ Support: Now uses Terser instead of Uglifier for better modern JavaScript support
  • Production-Only: Only runs when JEKYLL_ENV="production" for optimal development experience
  • Comprehensive Minification: Handles HTML, XML, CSS, JSON, and JavaScript files
  • Backward Compatible: Supports legacy uglifier_args configuration for easy migration

Minifies HTML, XML, CSS, JSON and JavaScript both inline and as separate files utilising terser, cssminify2, json-minify and htmlcompressor.

This was created due to the previous minifier (jekyll-press) not being CSS3 compatible, which made me frown.

Note: this is my first ever gem, I'm learning, so feedback is much appreciated.

** This minifier now only runs when JEKYLL_ENV="production" is set in the environment **

Easy to use, just install the jekyll-minifier gem:

gem install jekyll-minifier

Then add this to your _config.yml:

plugins:
    - jekyll-minifier

Optionally, you can also add exclusions using:

jekyll-minifier:
  exclude: 'atom.xml' # Exclude files from processing - file name, glob pattern or array of file names and glob patterns

and toggle features and settings using:

jekyll-minifier:
  preserve_php: true                # Default: false
  remove_spaces_inside_tags: true   # Default: true
  remove_multi_spaces: true         # Default: true
  remove_comments: true             # Default: true
  remove_intertag_spaces: true      # Default: false
  remove_quotes: false              # Default: false
  compress_css: true                # Default: true
  compress_javascript: true         # Default: true
  compress_json: true               # Default: true
  simple_doctype: false             # Default: false
  remove_script_attributes: false   # Default: false
  remove_style_attributes: false    # Default: false
  remove_link_attributes: false     # Default: false
  remove_form_attributes: false     # Default: false
  remove_input_attributes: false    # Default: false
  remove_javascript_protocol: false # Default: false
  remove_http_protocol: false       # Default: false
  remove_https_protocol: false      # Default: false
  preserve_line_breaks: false       # Default: false
  simple_boolean_attributes: false  # Default: false
  compress_js_templates: false      # Default: false
  preserve_patterns:                # Default: (empty)
  terser_args:                      # Default: (empty)

terser_args can be found in the terser-ruby documentation.

Note: For backward compatibility, uglifier_args is also supported and will be treated as terser_args.

Like my stuff?

Would you like to buy me a coffee or send me a tip? While it's not expected, I would really appreciate it.

Paypal Buy Me A Coffee