mirror of
https://github.com/codeninjasllc/discourse.git
synced 2024-11-27 09:36:19 -05:00
PERF: Uglify and gzip assets concurrently.
This commit is contained in:
parent
51b0b5f2f8
commit
b744306654
1 changed files with 34 additions and 20 deletions
|
@ -116,6 +116,16 @@ def compress(from,to)
|
|||
end
|
||||
end
|
||||
|
||||
def concurrent?
|
||||
if ENV["CONCURRENT"] == "1"
|
||||
concurrent_compressors = []
|
||||
yield(Proc.new { |&block| concurrent_compressors << Concurrent::Future.execute { block.call } })
|
||||
concurrent_compressors.each(&:wait!)
|
||||
else
|
||||
yield(Proc.new { |&block| block.call })
|
||||
end
|
||||
end
|
||||
|
||||
task 'assets:precompile' => 'assets:precompile:before' do
|
||||
# Run after assets:precompile
|
||||
Rake::Task["assets:precompile:css"].invoke
|
||||
|
@ -124,30 +134,34 @@ task 'assets:precompile' => 'assets:precompile:before' do
|
|||
puts "Compressing Javascript and Generating Source Maps"
|
||||
manifest = Sprockets::Manifest.new(assets_path)
|
||||
|
||||
to_skip = Rails.configuration.assets.skip_minification || []
|
||||
manifest.files
|
||||
.select{|k,v| k =~ /\.js$/}
|
||||
.each do |file, info|
|
||||
concurrent? do |proc|
|
||||
to_skip = Rails.configuration.assets.skip_minification || []
|
||||
manifest.files
|
||||
.select{|k,v| k =~ /\.js$/}
|
||||
.each do |file, info|
|
||||
|
||||
path = "#{assets_path}/#{file}"
|
||||
_file = (d = File.dirname(file)) == "." ? "_#{file}" : "#{d}/_#{File.basename(file)}"
|
||||
_path = "#{assets_path}/#{_file}"
|
||||
path = "#{assets_path}/#{file}"
|
||||
_file = (d = File.dirname(file)) == "." ? "_#{file}" : "#{d}/_#{File.basename(file)}"
|
||||
_path = "#{assets_path}/#{_file}"
|
||||
|
||||
if File.exists?(_path)
|
||||
STDERR.puts "Skipping: #{file} already compressed"
|
||||
else
|
||||
STDERR.puts "Compressing: #{file}"
|
||||
if File.exists?(_path)
|
||||
STDERR.puts "Skipping: #{file} already compressed"
|
||||
else
|
||||
STDERR.puts "Compressing: #{file}"
|
||||
|
||||
# We can specify some files to never minify
|
||||
unless (ENV["DONT_MINIFY"] == "1") || to_skip.include?(info['logical_path'])
|
||||
FileUtils.mv(path, _path)
|
||||
compress(_file,file)
|
||||
proc.call do
|
||||
# We can specify some files to never minify
|
||||
unless (ENV["DONT_MINIFY"] == "1") || to_skip.include?(info['logical_path'])
|
||||
FileUtils.mv(path, _path)
|
||||
compress(_file,file)
|
||||
end
|
||||
|
||||
info["size"] = File.size(path)
|
||||
info["mtime"] = File.mtime(path).iso8601
|
||||
gzip(path)
|
||||
end
|
||||
end
|
||||
|
||||
info["size"] = File.size(path)
|
||||
info["mtime"] = File.mtime(path).iso8601
|
||||
gzip(path)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# protected
|
||||
|
|
Loading…
Reference in a new issue