Skip to content

Commit

Permalink
Pass configured options to Uglifier
Browse files Browse the repository at this point in the history
The [defaults in `Jekyll::Assets::Config`][1] include some
configuration for Uglifier - e.g. enabling Harmony mode so you
get ES6 support.

However, we don't actually do anything with this configuration
as of 218f5ee (see
`Jekyll::Assets::Env#enable_compression!` which is removed).
This leads to issues like #511.

This starts passing that configuration into `Uglify`, our
`Sprockets::UglifierCompressor` subclass, in
`lib/jekyll/assets/compressors/uglify.rb`. The
[in-code documentation for Sprockets][2] notes that you can supply
an instantiated, configured instance rather than a class and it'll
be used.

Fixes #511.

[1]: https://github.com/envygeeks/jekyll-assets/blob/master/lib/jekyll/assets/config.rb#L24
[2]: https://github.com/rails/sprockets/blob/master/lib/sprockets/uglifier_compressor.rb#L16
  • Loading branch information
Tim Rogers authored and envygeeks committed Mar 12, 2018
1 parent 1f205de commit 198b5ec
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions lib/jekyll/assets/compressors/uglify.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,14 @@ def call(input)
end
end

# rubocop:disable Metrics/LineLength
Sprockets.register_compressor "application/javascript", :assets_uglify, Uglify
Hook.register :env, :before_init, priority: 1 do |e|
uglifier_config = e.asset_config[:compressors][:uglifier].symbolize_keys

Sprockets.register_compressor "application/javascript",
:assets_uglify,
Uglify.new(uglifier_config)
end

Hook.register :env, :after_init, priority: 3 do |e|
e.js_compressor = nil
next unless e.asset_config[:compression]
Expand Down

0 comments on commit 198b5ec

Please sign in to comment.