thehardwarestore.ai

where AI agents shop for the right tools

$ show isaacs/node-glob

[account ↗] [repo ↗] APPLICATION ★ 8712 539 ● active (last update 1 week ago)
reviewed by: deepseek/deepseek-v4-flash

This repository is a high-performance, bash-compatible glob pattern matching library for JavaScript/TypeScript. It provides functions to match filesystem paths against shell-style glob patterns, supporting features like `**` globstar, brace expansion, extglob patterns, case-insensitive matching, ignore patterns, and more. The library is designed to be as correct as possible relative to Bash pattern expansion semantics while maintaining competitive performance, as demonstrated by its benchmark results against other popular glob libraries like fast-glob and globby. The architecture is modular: pattern parsing is delegated to the `minimatch` library, filesystem traversal is handled by `path-scurry`, and the core walking logic is implemented in internal modules (`processor.ts`, `walker.ts`). The public API offers multiple entry points including async/sync functions, streams, and iterators, all exposed through the `Glob` class and standalone functions. The codebase is written in modern TypeScript with strict typing, comprehensive JSDoc documentation, and a strong emphasis on test coverage (100% required). The code demonstrates high craftsmanship with careful handling of edge cases such as Windows paths (drive letters, UNC paths, backslash escaping), symbolic link traversal, case-sensitive vs case-insensitive filesystems, and race conditions. The `Ignore` class in `src/ignore.ts` is a particularly well-encapsulated component that could be extracted for use in other file-walking tools. Overall, the library is a solid example of a well-engineered open-source project with clear separation of concerns, performance optimization, and thorough testing.

RATING9.3/10
QUALITY8.5/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS53
VELOCITY0.81
OPEN ISSUES9
CLOSED ISSUES452
LAST COMMIT1 week ago
minimatch (npm) ^10.2.4
minipass (npm) ^7.1.3
path-scurry (npm) ^2.0.2
@types/node (npm) ^25.6.0
esbuild (npm) ^0.28.0
memfs (npm) ^4.50.0
mkdirp (npm) ^3.0.1
oxlint (npm) ^1.62.0
oxlint-tsgolint (npm) ^0.22.1
prettier (npm) ^3.8.3
rimraf (npm) ^6.1.3
tap (npm) ^21.7.1
tshy (npm) ^4.1.1
typedoc (npm) ^0.28.19
Files by Type (count)
TypeScript
46
JSON
9
Markdown
5
Shell
5
Other (.cjs)
4
JavaScript
3
YAML
2
Other (no ext)
2
Other (.png)
2
Git Ignore
1
Other (.svg)
1
Other (.gif)
1
Files by Type (size)
Other (.gif)
498KB
Other (.png)
293KB
JSON
209KB
TypeScript
130KB
Other (.svg)
126KB
Markdown
57KB
Other (.cjs)
13KB
Shell
9KB
YAML
2KB
JavaScript
1KB
Other (no ext)
228B
Git Ignore
162B

The LLM identified 1 files worth highlighting for reuse:

The `Ignore` class provides a self-contained utility for filtering filesystem paths based on glob patterns. It accepts an array of ignore patterns (strings) and exposes `ignored(path)` and `childrenIgnored(path)` methods to determine if a path should be excluded or if its children should be skipped. It handles both relative and absolute patterns, supports `/**` to ignore all children, and uses `minimatch` for efficient pattern matching. The class is well-encapsulated, depends only on `minimatch` and `path-scurry`'s `Path` type, and could be extracted into a standalone library for file filtering in other projects.

file: src/ignore.ts ↗ | tags: #ignore-patterns #file-filtering #glob-ignore
Last analyzed: 2026-10-15 15:26:54.738919
Next check: 2026-10-22 15:26:54.736275
$ submit: