In SourceWatcher, add a subroutine to find files which should be considered "also dirty" when a given file is touched.
This commit is contained in:
parent
45939e7e93
commit
13a14d43d4
|
@ -222,6 +222,8 @@ module Middleman
|
||||||
|
|
||||||
return if updated.empty? && removed.empty?
|
return if updated.empty? && removed.empty?
|
||||||
|
|
||||||
|
updated |= find_related_files(updated + removed)
|
||||||
|
|
||||||
update(updated.map { |s| Pathname(s) }, removed.map { |s| Pathname(s) })
|
update(updated.map { |s| Pathname(s) }, removed.map { |s| Pathname(s) })
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -304,5 +306,24 @@ module Middleman
|
||||||
|
|
||||||
::Middleman::SourceFile.new(Pathname(relative_path), path, @directory, types)
|
::Middleman::SourceFile.new(Pathname(relative_path), path, @directory, types)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Finds files which should also be considered to be dirty when
|
||||||
|
# the given file(s) are touched.
|
||||||
|
#
|
||||||
|
# @param [Array] files The original touched file paths.
|
||||||
|
# @return [Array] All related file paths, not including the source file paths.
|
||||||
|
Contract ArrayOf[String] => ArrayOf[String]
|
||||||
|
def find_related_files(files)
|
||||||
|
files.map do |file|
|
||||||
|
related_files = []
|
||||||
|
|
||||||
|
# If any SASS file changes, reload all non-partials
|
||||||
|
if file =~ /\.(sass|scss)$/
|
||||||
|
related_files |= Dir[File.join(@directory, app.config[:css_dir], '**/[^_]*.{scss,sass}')]
|
||||||
|
end
|
||||||
|
|
||||||
|
related_files
|
||||||
|
end.flatten.uniq - files
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue