fs: add maxDepth option to glob#64003
Open
TheAlexLichter wants to merge 1 commit into
Open
Conversation
Collaborator
|
Review requested:
|
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR adds a
maxDepthoption tofs.glob(),fs.globSync(), andfs.promises.glob().Motivation
Broad glob patterns such as
**currently traverse the complete matching directory tree. Results can be filtered further afterwards but that does not avoid the associated filesystem work for use cases that only need "nearby entries".This is particularly costly for large directory trees or mounted filesystems.
Similar functionality is already available in existing 3rd party packages like
tinyglobbyin various ways.Implementation
Depth is measured relative to
cwd:cwdhas depth 0The default is
Infinity(compatible with existing default behavior). A finite limit applies to both returned matches and filesystem traversal, allowing subtrees to be skipped.Relative patterns cannot bypass the limit using
.., and paths outsidecwd, including paths on another Windows volume, are outside any finite depth.Absolute patterns can traverse ancestors as needed to reach
cwd, but matches outsidecwdare excluded when the limit is finite.