Skip to content

Commit

Permalink
Merge pull request github#456 from github/compress-sass
Browse files Browse the repository at this point in the history
Default sass to compressed in production
  • Loading branch information
benbalter authored Jul 20, 2017
2 parents 5b86cad + 3dbe2ba commit a311570
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 6 deletions.
18 changes: 12 additions & 6 deletions lib/github-pages/configuration.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,12 @@ class Configuration
},
}.freeze

# Jekyll defaults merged with Pages defaults.
MERGED_DEFAULTS = Jekyll::Utils.deep_merge_hashes(
Jekyll::Configuration::DEFAULTS,
DEFAULTS
).freeze
# User-overwritable defaults used only in production for practical reasons
PRODUCTION_DEFAULTS = Jekyll::Utils.deep_merge_hashes DEFAULTS, {
"sass" => {
"style" => "compressed",
},
}.freeze

# Options which GitHub Pages sets, regardless of the user-specified value
#
Expand Down Expand Up @@ -82,6 +83,11 @@ def development?
Jekyll.env == "development"
end

def defaults_for_env
defaults = development? ? DEFAULTS : PRODUCTION_DEFAULTS
Jekyll::Utils.deep_merge_hashes Jekyll::Configuration::DEFAULTS, defaults
end

# Given a user's config, determines the effective configuration by building a user
# configuration sandwhich with our overrides overriding the user's specified
# values which themselves override our defaults.
Expand All @@ -91,7 +97,7 @@ def development?
# Note: this is a highly modified version of Jekyll#configuration
def effective_config(user_config)
# Merge user config into defaults
config = Jekyll::Utils.deep_merge_hashes(MERGED_DEFAULTS, user_config)
config = Jekyll::Utils.deep_merge_hashes(defaults_for_env, user_config)
.fix_common_issues
.add_default_collections

Expand Down
16 changes: 16 additions & 0 deletions spec/github-pages/configuration_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
let(:configuration) { Jekyll.configuration(test_config) }
let(:site) { Jekyll::Site.new(configuration) }
let(:effective_config) { described_class.effective_config(site.config) }
let(:defaults_for_env) { described_class.defaults_for_env }

before(:each) do
ENV.delete("DISABLE_WHITELIST")
ENV["JEKYLL_ENV"] = "test"
Expand Down Expand Up @@ -55,6 +57,15 @@
it "accepts local configs" do
expect(effective_config["testing"]).to eql("123")
end

context "in development" do
before { ENV["JEKYLL_ENV"] = "development" }

it "doesn't compress sass" do
expect(effective_config["sass"]).to be_nil
expect(defaults_for_env["sass"]).to be_nil
end
end
end

context "#set being called via the hook" do
Expand Down Expand Up @@ -159,6 +170,11 @@
expect(described_class.disable_whitelist?).to eql(false)
end
end

it "compresses sass" do
expect(effective_config["sass"]).to eql("style" => "compressed")
expect(defaults_for_env["sass"]).to eql("style" => "compressed")
end
end
end
end

0 comments on commit a311570

Please sign in to comment.