Skip to content

digitalsparky/jekyll-minifier

Repository files navigation

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