-
Notifications
You must be signed in to change notification settings - Fork 31.1k
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
Using globstar in glob pattern prevents dot (hidden) files from being matched #56321
Comments
I've run into the same bug, Node 22.13.1
It looks like the bug occurs when the pattern specifically begins with A possible workaround is to use 2 patterns: one searches in CWD, another one searches for dotfiles in all directories below CWD: |
According to my tests, that does not solve the problem. Instead, I have to use a single glob for each depth. ['packages/*/test/fixtures/*/.*.js', 'packages/*/test/fixtures/*/*/.*.js', 'packages/*/test/fixtures/*/*/*/.*.js'] ...which defeats the whole purpose of globstar. |
Hi there 👋 I've had a look into this and fixing it seems to be pretty simple, these changes should do the trick: dario-piotrowicz@2499a0c However you can see from my code changes that the current behavior for dot files in globstar matches looks pretty intentional, so maybe they should actualy not be included? More specifically the question on my mind is, should dot files be included in the first place in glob searches or not? Currently dot files in normal matches are included but those in globstar matches are not, I think this is very inconsistent and incorrect, but which one is the correct/desired implementation? In the The main problem I think would be that that would cause a breaking change, since dot files in normal matches would disappear unless users specify the So to summarize the above:
If someone from the nodejs team can give some guidance here on what the nodejs implementation should work like I'd be happy to help out and implement a solution for this 🙂 @MoLow maybe you could help here? 🙂 (I'm pinging you based on #47653) |
Version
v22.5.0
Platform
Subsystem
fs
What steps will reproduce the bug?
Create the following files to scan:
Create the following script:
Whenever
**
is used in the pattern, the dot (hidden) files are not matched, even though the pattern specifically requests them.How often does it reproduce? Is there a required condition?
Always reproducible as long as
**
is used in the pattern and the pattern is matching dot (hidden) files.If the pattern is
*
or an explicit directory name, then the dot (hidden) files are matched. So this is specific to using globstar (**
).What is the expected behavior? Why is that the expected behavior?
The dot (hidden) files should be matched after the globstar because the pattern is specifically requesting them.
What do you see instead?
When globstar is used in the pattern, the dot (hidden) files are not matched.
Additional information
The described scenario works as expected using node-glob and bash, so the behavior of the built-in function in Node.js is inconsistent.
The text was updated successfully, but these errors were encountered: