Merge pull request #392 from bhollis/minify
Disable inline minification by default, allow it to be turned on with an option
This commit is contained in:
commit
1e271448fa
4 changed files with 28 additions and 12 deletions
|
@ -12,6 +12,14 @@ Given /^"([^\"]*)" feature is "([^\"]*)"$/ do |feature, state|
|
|||
end
|
||||
end
|
||||
|
||||
Given /^"([^\"]*)" feature is "enabled" with "([^\"]*)"$/ do |feature, options_str|
|
||||
@initialize_commands ||= []
|
||||
|
||||
options = eval("{#{options_str}}")
|
||||
|
||||
@initialize_commands << lambda { activate(feature.to_sym, options) }
|
||||
end
|
||||
|
||||
Given /^"([^\"]*)" is set to "([^\"]*)"$/ do |variable, value|
|
||||
@initialize_commands ||= []
|
||||
@initialize_commands << lambda { set(variable.to_sym, value) }
|
||||
|
|
|
@ -78,7 +78,7 @@ Feature: Minify Javascript
|
|||
"""
|
||||
|
||||
Scenario: Rendering inline js with the feature enabled
|
||||
Given "minify_javascript" feature is "enabled"
|
||||
Given "minify_javascript" feature is "enabled" with ":inline => true"
|
||||
And the Server is running at "minify-js-app"
|
||||
When I go to "/inline-js.html"
|
||||
Then I should see:
|
||||
|
@ -115,7 +115,7 @@ Feature: Minify Javascript
|
|||
Then I should see "8" lines
|
||||
|
||||
Scenario: Rendering inline js (coffeescript) with the feature enabled
|
||||
Given "minify_javascript" feature is "enabled"
|
||||
Given "minify_javascript" feature is "enabled" with ":inline => true"
|
||||
And the Server is running at "minify-js-app"
|
||||
When I go to "/inline-coffeescript.html"
|
||||
Then I should see "6" lines
|
||||
|
|
|
@ -12,6 +12,7 @@ module Middleman::Extensions
|
|||
app.set :css_compressor, false
|
||||
|
||||
ignore = Array(options[:ignore]) << /\.min\./
|
||||
inline = options[:inline] || false
|
||||
|
||||
app.after_configuration do
|
||||
unless respond_to?(:css_compressor) && css_compressor
|
||||
|
@ -19,16 +20,18 @@ module Middleman::Extensions
|
|||
set :css_compressor, ::Rainpress
|
||||
end
|
||||
|
||||
# Setup Rack to watch for inline JS
|
||||
use InlineCSSRack, :compressor => css_compressor, :ignore => ignore
|
||||
# Setup Rack middleware to minify CSS
|
||||
use MinifyCSSRack, :compressor => css_compressor,
|
||||
:ignore => ignore,
|
||||
:inline => inline
|
||||
end
|
||||
end
|
||||
alias :included :registered
|
||||
end
|
||||
end
|
||||
|
||||
# Rack middleware to look for JS in HTML and compress it
|
||||
class InlineCSSRack
|
||||
# Rack middleware to look for CSS and compress it
|
||||
class MinifyCSSRack
|
||||
|
||||
# Init
|
||||
# @param [Class] app
|
||||
|
@ -37,6 +40,7 @@ module Middleman::Extensions
|
|||
@app = app
|
||||
@compressor = options[:compressor]
|
||||
@ignore = options[:ignore]
|
||||
@inline = options[:inline]
|
||||
end
|
||||
|
||||
# Rack interface
|
||||
|
@ -47,7 +51,7 @@ module Middleman::Extensions
|
|||
|
||||
path = env["PATH_INFO"]
|
||||
|
||||
if path.end_with?('.html') || path.end_with?('.php')
|
||||
if (path.end_with?('.html') || path.end_with?('.php')) && @inline
|
||||
uncompressed_source = extract_response_text(response)
|
||||
|
||||
minified = uncompressed_source.gsub(/(<style[^>]*>\s*(?:\/\*<!\[CDATA\[\*\/\n)?)(.*?)((?:(?:\n\s*)?\/\*\]\]>\*\/)?\s*<\/style>)/m) do |match|
|
||||
|
|
|
@ -12,6 +12,7 @@ module Middleman::Extensions
|
|||
app.set :js_compressor, false
|
||||
|
||||
ignore = Array(options[:ignore]) << /\.min\./
|
||||
inline = options[:inline] || false
|
||||
|
||||
# Once config is parsed
|
||||
app.after_configuration do
|
||||
|
@ -20,15 +21,17 @@ module Middleman::Extensions
|
|||
set :js_compressor, ::Uglifier.new
|
||||
end
|
||||
|
||||
# Setup Rack to watch for inline JS
|
||||
use InlineJavascriptRack, :compressor => js_compressor, :ignore => ignore
|
||||
# Setup Rack middlware to minify JS
|
||||
use MinifyJavascriptRack, :compressor => js_compressor,
|
||||
:ignore => ignore,
|
||||
:inline => inline
|
||||
end
|
||||
end
|
||||
alias :included :registered
|
||||
end
|
||||
|
||||
# Rack middleware to look for JS in HTML and compress it
|
||||
class InlineJavascriptRack
|
||||
# Rack middleware to look for JS and compress it
|
||||
class MinifyJavascriptRack
|
||||
|
||||
# Init
|
||||
# @param [Class] app
|
||||
|
@ -37,6 +40,7 @@ module Middleman::Extensions
|
|||
@app = app
|
||||
@compressor = options[:compressor]
|
||||
@ignore = options[:ignore]
|
||||
@inline = options[:inline]
|
||||
end
|
||||
|
||||
# Rack interface
|
||||
|
@ -48,7 +52,7 @@ module Middleman::Extensions
|
|||
path = env["PATH_INFO"]
|
||||
|
||||
begin
|
||||
if path.end_with?('.html') || path.end_with?('.php')
|
||||
if (path.end_with?('.html') || path.end_with?('.php')) && @inline
|
||||
uncompressed_source = extract_response_text(response)
|
||||
|
||||
minified = uncompressed_source.gsub(/(<script[^>]*>\s*(?:\/\/(?:(?:<!--)|(?:<!\[CDATA\[))\n)?)(.*?)((?:(?:\n\s*)?\/\/(?:(?:-->)|(?:\]\]>)))?\s*<\/script>)/m) do |match|
|
||||
|
|
Loading…
Reference in a new issue