Fixes #1716
This commit is contained in:
parent
5cac6a1896
commit
c6401f1cd9
4 changed files with 26 additions and 3 deletions
|
@ -12,6 +12,7 @@ master
|
||||||
* Fix new extension template
|
* Fix new extension template
|
||||||
* Don't parse frontmatter on ignored files.
|
* Don't parse frontmatter on ignored files.
|
||||||
* Fix displaying frontmatter on `/__middleman/sitemap`
|
* Fix displaying frontmatter on `/__middleman/sitemap`
|
||||||
|
* Add `skip_build_clean` config which when set to a block, will avoid removing non-generated paths from build, like .git #1716
|
||||||
|
|
||||||
# 4.0.0
|
# 4.0.0
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,22 @@ Feature: Build Clean
|
||||||
| build/should_be_ignored3.html |
|
| build/should_be_ignored3.html |
|
||||||
And the file "build/index.html" should contain "Comment in layout"
|
And the file "build/index.html" should contain "Comment in layout"
|
||||||
|
|
||||||
|
Scenario: Clean build has a whitelist
|
||||||
|
Given a fixture app "clean-app"
|
||||||
|
When a file named "build/.test" with:
|
||||||
|
"""
|
||||||
|
Hello
|
||||||
|
"""
|
||||||
|
When a file named "config.rb" with:
|
||||||
|
"""
|
||||||
|
set :skip_build_clean do |path|
|
||||||
|
path =~ /\.test/
|
||||||
|
end
|
||||||
|
"""
|
||||||
|
Given a built app at "clean-app"
|
||||||
|
Then the following files should exist:
|
||||||
|
| build/.test |
|
||||||
|
|
||||||
Scenario: Clean build an app with newly ignored files and a nested output directory
|
Scenario: Clean build an app with newly ignored files and a nested output directory
|
||||||
Given a fixture app "clean-nested-app"
|
Given a fixture app "clean-nested-app"
|
||||||
When a file named "config.rb" with:
|
When a file named "config.rb" with:
|
||||||
|
|
|
@ -191,6 +191,8 @@ module Middleman
|
||||||
yaml: [%w(--- ---), %w(--- ...)]
|
yaml: [%w(--- ---), %w(--- ...)]
|
||||||
}, 'Allowed frontmatter delimiters'
|
}, 'Allowed frontmatter delimiters'
|
||||||
|
|
||||||
|
define_setting :skip_build_clean, proc { |p| [/\.git/].any? { |r| r.match(p) } }, 'Whether some paths should not be removed during a clean build.'
|
||||||
|
|
||||||
define_setting :watcher_disable, false, 'If the Listen watcher should not run'
|
define_setting :watcher_disable, false, 'If the Listen watcher should not run'
|
||||||
define_setting :watcher_force_polling, false, 'If the Listen watcher should run in polling mode'
|
define_setting :watcher_force_polling, false, 'If the Listen watcher should run in polling mode'
|
||||||
define_setting :watcher_latency, nil, 'The Listen watcher latency'
|
define_setting :watcher_latency, nil, 'The Listen watcher latency'
|
||||||
|
|
|
@ -58,7 +58,7 @@ module Middleman
|
||||||
prerender_css
|
prerender_css
|
||||||
output_files
|
output_files
|
||||||
|
|
||||||
clean if @cleaning
|
clean! if @cleaning
|
||||||
|
|
||||||
::Middleman::Profiling.report('build')
|
::Middleman::Profiling.report('build')
|
||||||
|
|
||||||
|
@ -219,8 +219,12 @@ module Middleman
|
||||||
|
|
||||||
# Remove files which were not built in this cycle
|
# Remove files which were not built in this cycle
|
||||||
Contract ArrayOf[Pathname]
|
Contract ArrayOf[Pathname]
|
||||||
def clean
|
def clean!
|
||||||
@to_clean.each do |f|
|
to_remove = @to_clean.reject do |f|
|
||||||
|
app.config[:skip_build_clean].call(f.to_s)
|
||||||
|
end
|
||||||
|
|
||||||
|
to_remove.each do |f|
|
||||||
FileUtils.rm(f)
|
FileUtils.rm(f)
|
||||||
trigger(:deleted, f)
|
trigger(:deleted, f)
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue