Accept list of paths to exclude from gzipping.
This commit is contained in:
parent
b819d38358
commit
429e7d64bd
|
@ -34,3 +34,19 @@ Feature: GZIP assets during build
|
||||||
| build/stylesheets/test.css |
|
| build/stylesheets/test.css |
|
||||||
And the following files should not exist:
|
And the following files should not exist:
|
||||||
| build/stylesheets/test.css.gz |
|
| build/stylesheets/test.css.gz |
|
||||||
|
|
||||||
|
Scenario: Gzipped files are not produced for ignored paths
|
||||||
|
Given a fixture app "gzip-app"
|
||||||
|
And a file named "config.rb" with:
|
||||||
|
"""
|
||||||
|
activate :gzip, ignore: ['index.html', %r(javascripts/.*)]
|
||||||
|
"""
|
||||||
|
And a successfully built app at "gzip-app"
|
||||||
|
Then the following files should exist:
|
||||||
|
| build/index.html |
|
||||||
|
| build/javascripts/test.js |
|
||||||
|
| build/stylesheets/test.css |
|
||||||
|
| build/stylesheets/test.css.gz |
|
||||||
|
And the following files should not exist:
|
||||||
|
| build/index.html.gz |
|
||||||
|
| build/javascripts/test.js.gz |
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#
|
#
|
||||||
class Middleman::Extensions::Gzip < ::Middleman::Extension
|
class Middleman::Extensions::Gzip < ::Middleman::Extension
|
||||||
option :exts, %w(.js .css .html .htm), 'File extensions to Gzip when building.'
|
option :exts, %w(.js .css .html .htm), 'File extensions to Gzip when building.'
|
||||||
|
option :ignore, [], 'Patterns to avoid gzipping'
|
||||||
|
|
||||||
def initialize(app, options_hash={})
|
def initialize(app, options_hash={})
|
||||||
super
|
super
|
||||||
|
@ -29,7 +30,7 @@ class Middleman::Extensions::Gzip < ::Middleman::Extension
|
||||||
# Fill a queue with inputs
|
# Fill a queue with inputs
|
||||||
in_queue = Queue.new
|
in_queue = Queue.new
|
||||||
paths.each do |path|
|
paths.each do |path|
|
||||||
in_queue << path if options.exts.include?(path.extname)
|
in_queue << path if should_gzip?(path)
|
||||||
end
|
end
|
||||||
num_paths = in_queue.size
|
num_paths = in_queue.size
|
||||||
|
|
||||||
|
@ -93,4 +94,13 @@ class Middleman::Extensions::Gzip < ::Middleman::Extension
|
||||||
|
|
||||||
[output_filename, old_size, new_size]
|
[output_filename, old_size, new_size]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
# Whether a path should be gzipped
|
||||||
|
# @param [Pathname] path A destination path
|
||||||
|
# @return [Boolean]
|
||||||
|
def should_gzip?(path)
|
||||||
|
options.exts.include?(path.extname) && options.ignore.none? { |ignore| Middleman::Util.path_match(ignore, path.to_s) }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue