diff --git a/lib/cli/watch-run.js b/lib/cli/watch-run.js index 3d9eef6aeb..7b23d0fab2 100644 --- a/lib/cli/watch-run.js +++ b/lib/cli/watch-run.js @@ -145,15 +145,23 @@ class GlobFilesTracker { } regenerate() { - let watchIgnoreFlat = []; + const watchIgnoreSet = new Set(); for (const pattern of this.watchIgnore) { - watchIgnoreFlat = watchIgnoreFlat.concat(glob.sync(pattern, { dot: true })); + glob.sync(pattern, { dot: true }).forEach(filePath => watchIgnoreSet.add(filePath)); } + const globOpts = { + dot: true, + ignore: { + ignored: () => false, + childrenIgnored: pathToCheck => watchIgnoreSet.has(pathToCheck.relative()) + } + }; + this.watchFilesSet.clear(); for (const pattern of this.watchFiles) { - glob.sync(pattern, { dot: true }).forEach(pathToCheck => { - for (const watchIgnore of watchIgnoreFlat) { + glob.sync(pattern, globOpts).forEach(pathToCheck => { + for (const watchIgnore of watchIgnoreSet) { if (pathToCheck === watchIgnore) { return; }