Skip to content

Commit d906b9d

Browse files
authored
Merge pull request #9245 from jrafanie/wrap_uglifier_to_allow_es6_and_avoid_loading_js_runtime
Wrap the uglifier compressor with harmony support
2 parents 1cd2e46 + c4c67f6 commit d906b9d

File tree

2 files changed

+22
-4
lines changed

2 files changed

+22
-4
lines changed

lib/manageiq/ui/classic/engine.rb

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,15 @@ class Engine < ::Rails::Engine
3737
config.assets.paths << root.join('vendor', 'assets', 'stylesheets').to_s
3838

3939
if Rails.env.production? || Rails.env.test?
40-
# Workaround rails 7 + es6 syntax in some js causing uglifier errors by running harmony mode
41-
# See: https://www.github.com/lautis/uglifier/issues/127
42-
require 'uglifier'
43-
config.assets.js_compressor = Uglifier.new(:harmony => true)
40+
config.assets.configure do |env|
41+
# Workaround rails 7 + es6 syntax in some js causing uglifier errors by running harmony mode
42+
# See: https://www.github.com/lautis/uglifier/issues/127
43+
# Note, we're purposely using our own compressor to avoid requiring uglifier at application boot time
44+
# since this require a js runtime such as node.
45+
require 'manageiq/ui/classic/js_compressor'
46+
env.register_compressor 'application/javascript', :manageiq_ui_classic_js_compressor, ManageIQ::UI::Classic::JsCompressor
47+
end
48+
config.assets.js_compressor = :manageiq_ui_classic_js_compressor
4449
end
4550

4651
def self.vmdb_plugin?
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
module ManageIQ
2+
module UI
3+
module Classic
4+
class JsCompressor < Sprockets::UglifierCompressor
5+
def initialize(options = {})
6+
warn "\e[33m** Using #{self.class.name} with Uglifier.new(:harmony => true) from: #{__FILE__}:#{__LINE__}\e[0m"
7+
options[:harmony] = true
8+
super(options)
9+
end
10+
end
11+
end
12+
end
13+
end

0 commit comments

Comments
 (0)