Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow disabling import of theme configuration #8131

Merged
merged 7 commits into from May 6, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
18 changes: 18 additions & 0 deletions docs/_docs/configuration/options.md
Expand Up @@ -72,6 +72,24 @@ class="flag">flags</code> (specified on the command-line) that control them.
<p><code class="flag">--disable-disk-cache</code></p>
</td>
</tr>
<tr class="setting">
<td>
<p class="name">
<strong>Ignore theme configuration</strong>
<span class="version-badge" title="Introduced in v4.1.0">4.1.0</span>
</p>
<p class="description">
Jekyll 4.0 started allowing themes to bundle a <code>_config.yml</code>
to simplify theme-onboarding for new users.
In the unfortunate situation that importing a bundled theme configuration
messes up the merged site-configuration, the user can configure Jekyll
to not import the theme-config entirely.
</p>
</td>
<td class="align-center">
<p><code class="option">ignore_theme_config: BOOL</code></p>
</td>
</tr>
<tr class="setting">
<td>
<p class="name"><strong>Exclude</strong></p>
Expand Down
11 changes: 11 additions & 0 deletions features/theme_configuration.feature
Expand Up @@ -11,6 +11,17 @@ Feature: Bundling Config file with Theme gems
And the _site directory should exist
And I should see "aero" in "_site/index.html"

Scenario: Disabling import of theme configuration entirely
Given I have a configuration file with:
| key | value |
| theme | test-theme |
| ignore_theme_config | true |
And I have an "index.md" page that contains "{{ site.test_theme.skin }}"
When I run jekyll build
Then I should get a zero exit status
And the _site directory should exist
And I should not see "aero" in "_site/index.html"

Scenario: A pre-configured theme with valid config file overriding Jekyll defaults
Given I have a configuration file with "theme" set to "test-theme"
And I have an "index.md" page that contains "{{ site.baseurl }}"
Expand Down
2 changes: 2 additions & 0 deletions lib/jekyll/site.rb
Expand Up @@ -432,6 +432,8 @@ def collections_path
private

def load_theme_configuration(config)
return config if config["ignore_theme_config"] == true

theme_config_file = in_theme_dir("_config.yml")
return config unless File.exist?(theme_config_file)

Expand Down