-
Notifications
You must be signed in to change notification settings - Fork 781
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’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Ignore all those folders mentioned in the gitignore. #1384
Conversation
SparshithNR
commented
Mar 14, 2019
- ignores node_modules and .git folder irrespective of list in .gitignore file
- gitignored files/folders can be conviniently ignored.
For context about how much time this saves, |
@SparshithNR Thanks for this patch. Take a look at |
@SparshithNR I understand, but |
That makes sense. I will update the PR accordingly. |
f23a288
to
7309106
Compare
Made new changes. Everything moved to |
Please review this @Krinkle |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry for the delay in reviewing this. Some small changes suggested. After that, looks good to me. @Krinkle do you want to take another look?
1) ignore node_modules and .git folder always 2) Added test for new function 3) added sample .gitignore file in fixtures folder testing
f5c38e9
to
893089a
Compare
test/cli/fixtures/.gitignore
Outdated
@@ -0,0 +1,2 @@ | |||
/abcd | |||
/efgh |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Include the standard line break at the end of the file :)
Both suggestions have been applied.
This follows-up 837af39, which introduces the ignore list to the `--watch` mode when `run.restart()` calls `findFiles()`. However, it did not use it when running `qunit` normally on a file pattern. This meant that `qunit 'test/*.js'` generally still ended up scanning much of node_modules. Ref #1384.
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.
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.
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.
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.