class UglifierWithSourceMaps::Compressor
Public Class Methods
call(*args)
click to toggle source
# File lib/uglifier_with_source_maps/compressor.rb, line 3 def self.call(*args) new.call(*args) end
new(options = {})
click to toggle source
# File lib/uglifier_with_source_maps/compressor.rb, line 7 def initialize(options = {}) @uglifier = Uglifier.new(options) # @cache_key = [ # 'UglifierWithSourceMapsCompressor', # ::Uglifier::VERSION, # ::UglifierWithSourceMaps::VERSION, # options # ] end
Public Instance Methods
compress(data, context)
click to toggle source
# File lib/uglifier_with_source_maps/compressor.rb, line 17 def compress(data, context) minified_data, sourcemap = @uglifier.compile_with_map(data) # write source map minified_filename = [Rails.application.config.assets.prefix, "#{context.logical_path}-#{digest(minified_data)}.js"].join('/') sourcemap_filename = [Rails.application.config.assets.prefix, Rails.application.config.assets.sourcemaps_prefix, "#{context.logical_path}-#{digest(minified_data)}.map"].join('/') concatenated_filename = [Rails.application.config.assets.prefix, Rails.application.config.assets.uncompressed_prefix, "#{context.logical_path}-#{digest(minified_data)}.js"].join('/') map = JSON.parse(sourcemap) map['file'] = minified_filename map['sources'] = [concatenated_filename] FileUtils.mkdir_p File.dirname(File.join(Rails.public_path, sourcemap_filename)) FileUtils.mkdir_p File.dirname(File.join(Rails.public_path, concatenated_filename)) # Write sourcemap and uncompressed js File.open(File.join(Rails.public_path, sourcemap_filename), "w") { |f| f.puts map.to_json } File.open(File.join(Rails.public_path, concatenated_filename), "w") {|f| f.write(data)} sourcemap_comment = "\n//# sourceMappingURL=#{sourcemap_filename}\n" return minified_data + sourcemap_comment end
digest(io)
click to toggle source
# File lib/uglifier_with_source_maps/compressor.rb, line 42 def digest(io) Rails.application.assets.digest.update(io).hexdigest end