-
Notifications
You must be signed in to change notification settings - Fork 781
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
CLI: Reduce startup by using tiny-glob to only scan relevant paths
This follows-up 837af39, which introduced the ignore list to the `--watch` mode when `run.restart()` calls `findFiles()`. This was a big improvement for watch mode, but it still left two major issues behind: 1. It did not apply to when running qunit normally (without --watch). This could be easily fixed by passing IGNORED_GLOBS in run() down to getFilesFromArgs/findFiles the same way. 2. We are still scanning all other top-level directories that are not ignored, even if they do not match any part of the glob pattern. I investigated numerous matching libraries (picomatch, minimatch, etc.) but it seems none of of them offer a way to determine whether a given directory could contain a matching file. E.g. something that returns false for `src/` when given `test/*.js`, but returns true for `src/` if given `**/*.js`. So rather than approaching it from the angle of a matching library, I went looking for various "proper" glob libraries instead which handle both the pattern matching and the directory scanning responsibilities together. I considered: * isaacs/node-glob <http://npm.broofa.com/?q=glob@7.1.6>. 10 dependencies, including 3 for minimatch. Not an option. * mrmlnc/fast-glob <http://npm.broofa.com/?q=fast-glob@3.2.4> This uses picomatch, which is promising as being a popular dependency-free alternative to minimatch. But, it unfortunately does add up to 16 dependencies in total. * Crafity/node-glob <http://npm.broofa.com/?q=node-glob@1.2.0> A mostly self-contained implementation with 2 dependencies ('async' and 'glob-to-regexp'). Unfortunately, it seems to not do a limited traversal but rather * terkelg/tiny-glob <http://npm.broofa.com/?q=tiny-glob@0.2.6> Another self-contained implementation, with two local dependencies by the same author. Claims to be much faster than both fast-glob and node-glob. I think we have a winner. Ref #1384.
- Loading branch information
Showing
5 changed files
with
59 additions
and
73 deletions.
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters